Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.local.example
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ SMITHERY_API_KEY="your_smithery_api_key_here"
# Ensure it's also in your .env.local file if you haven't set it up yet.
# NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN="your_mapbox_public_token_here"

# AI Provider API Keys
# Gemini 3 Pro (Google Generative AI)
GEMINI_3_PRO_API_KEY="your_gemini_3_pro_api_key_here"

# Supabase Credentials
NEXT_PUBLIC_SUPABASE_URL="YOUR_SUPABASE_URL_HERE"
NEXT_PUBLIC_SUPABASE_ANON_KEY="YOUR_SUPABASE_ANON_KEY_HERE"
Expand Down
81 changes: 81 additions & 0 deletions GEMINI_3_PRO_INTEGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Gemini 3 Pro Integration

## Overview

This document describes the integration of Google's Gemini 3 Pro model into the QCX application. Gemini 3 Pro is Google's most advanced reasoning model with state-of-the-art capabilities for multimodal understanding, coding, and agentic tasks.

## Changes Made

### 1. Updated `lib/utils/index.ts`

Added Gemini 3 Pro as a provider option in the `getModel()` function with the following priority order:

1. **xAI (Grok)** - Primary choice if `XAI_API_KEY` is configured
2. **Gemini 3 Pro** - Secondary choice if `GEMINI_3_PRO_API_KEY` is configured *(NEW)*
3. **AWS Bedrock** - Tertiary choice if AWS credentials are configured
4. **OpenAI** - Default fallback if `OPENAI_API_KEY` is configured

The implementation includes:
- Environment variable check for `GEMINI_3_PRO_API_KEY`
- Creation of Google Generative AI client using `createGoogleGenerativeAI()`
- Model identifier: `gemini-3-pro-preview`
- Error handling with fallback to the next available provider

### 2. Updated `.env.local.example`

Added documentation for the new environment variable:

```bash
# AI Provider API Keys
# Gemini 3 Pro (Google Generative AI)
GEMINI_3_PRO_API_KEY="your_gemini_3_pro_api_key_here"
```

## Configuration

To use Gemini 3 Pro in your QCX deployment:

1. Obtain a Google AI API key from [Google AI Studio](https://aistudio.google.com/)
2. Add the API key to your `.env.local` file:
```bash
GEMINI_3_PRO_API_KEY="your_actual_api_key_here"
```
3. Restart your development server or redeploy your application
Comment on lines +34 to +43
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, find and examine the GEMINI_3_PRO_INTEGRATION.md file
find . -name "GEMINI_3_PRO_INTEGRATION.md" -type f

Repository: QueueLab/QCX

Length of output: 85


🏁 Script executed:

# Once found, read lines 34-43 to verify the formatting issue
sed -n '34,43p' GEMINI_3_PRO_INTEGRATION.md | cat -n

Repository: QueueLab/QCX

Length of output: 453


🏁 Script executed:

# Also check a broader context to understand the markdown structure
sed -n '30,50p' GEMINI_3_PRO_INTEGRATION.md | cat -n

Repository: QueueLab/QCX

Length of output: 856


🌐 Web query:

Google AI Studio access and API key configuration

💡 Result:

Summary — how to get access to Google AI Studio and configure an API key

  1. Access / projects
  • Sign in to Google AI Studio (studio or ai.google.dev). If new, accept Terms — Studio may create a default Google Cloud project and API key for you. To use your own Cloud projects, import them into AI Studio (Dashboard → Projects → Import projects). [1]
  1. Create an API key
  • You can create a key either from AI Studio (Dashboard → API Keys for an imported project) or in Google Cloud Console (APIs & Services → Credentials → Create credentials → API key). AI Studio also shows keys with permission to use the Gemini/Generative Language API. [1][2]
  1. Restrict and secure the key (best practice)
  • In Cloud Console, add API restrictions (allow only the Generative Language / Gemini API) and application restrictions (IP, HTTP referrers, apps) to reduce exposure. Rotate and monitor keys periodically. [2]
  1. Configure the key for use
  • Set an environment variable locally or in your service: GEMINI_API_KEY or GOOGLE_API_KEY (Google libraries pick them up; GOOGLE_API_KEY takes precedence if both set). You can also pass the key explicitly (header x-goog-api-key or ?key=) for REST/JS calls. [1][3]
  1. Verify the key (example curl)
  1. Additional notes
  • AI Studio limits: only keys with no restrictions or restricted to Generative Language API may be displayed; Studio can create a default project/key for new users; you may need to import projects you want to use. Some tools (Android Studio, MakerSuite) have direct “Get a Gemini API key” flows that open AI Studio. Monitor usage/limits in AI Studio. [1][3][4]

Sources
[1] Google AI Studio / setup & Gemini API keys (import projects, default project, Studio API Keys).
[2] Google Cloud — Manage API keys (create, restrict, rotate).
[3] Google Developers — Get an API key / Generative Language (curl examples; GEMINI_API_KEY / GOOGLE_API_KEY).
[4] Android Studio docs — add Gemini API key via AI Studio.


Add blank lines around the fenced code block in the ordered list.

Lines 37-39: The bash code block should be separated from list items by blank lines for proper markdown formatting and linting compliance.

 1. Obtain a Google AI API key from [Google AI Studio](https://aistudio.google.com/)
 2. Add the API key to your `.env.local` file:
+
    ```bash
    GEMINI_3_PRO_API_KEY="your_actual_api_key_here"
    ```
+
 3. Restart your development server or redeploy your application
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

40-40: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


42-42: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
GEMINI_3_PRO_INTEGRATION.md around lines 34 to 43: the fenced bash code block
inside the ordered list lacks blank lines before and after it which breaks
markdown linting; add a blank line above the opening ```bash and a blank line
after the closing ``` so the code block is separated from the list items,
preserving existing indentation and list numbering.


## Model Capabilities

Gemini 3 Pro (`gemini-3-pro-preview`) supports:

- **Advanced Reasoning**: State-of-the-art reasoning capabilities with optional thinking modes
- **Multimodal Understanding**: Text, image, and file inputs
- **Tool Usage**: Function calling and tool integration
- **Large Context Window**: 1M token context window
- **Agentic Capabilities**: Excellent for complex multi-step tasks
- **Coding**: Exceptional coding and technical capabilities

## Provider Priority

The provider selection follows this priority order:

```
XAI_API_KEY exists? → Use Grok
↓ No
GEMINI_3_PRO_API_KEY exists? → Use Gemini 3 Pro
↓ No
AWS credentials exist? → Use AWS Bedrock
↓ No
OPENAI_API_KEY exists? → Use OpenAI (default)
```
Comment on lines +45 to +68
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Verify capability claims and fix code block formatting.

The documentation makes specific capability claims (1M token context window, advanced reasoning modes, etc.) that should be verified against official documentation once the correct model identifier is confirmed.

Additionally, the fenced code block at line 60 should specify a language for proper rendering.

🔎 Proposed fix for code block language specification
 The provider selection follows this priority order:
 
-```
+```text
 XAI_API_KEY exists? → Use Grok
   ↓ No
 GEMINI_3_PRO_API_KEY exists? → Use Gemini 3 Pro
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

60-60: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


## Technical Details

- **SDK Package**: `@ai-sdk/google` (already imported in the codebase)
- **Model ID**: `gemini-3-pro-preview`
- **API Endpoint**: Google Generative AI API
- **Vercel AI SDK Compatible**: Yes, fully compatible with the unified interface

## References

- [Google Gemini 3 Documentation](https://ai.google.dev/gemini-api/docs/gemini-3)
- [Vercel AI SDK - Google Provider](https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai)
- [Google AI Studio](https://aistudio.google.com/)
13 changes: 13 additions & 0 deletions lib/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export function generateUUID(): string {

export function getModel() {
const xaiApiKey = process.env.XAI_API_KEY
const gemini3ProApiKey = process.env.GEMINI_3_PRO_API_KEY
const awsAccessKeyId = process.env.AWS_ACCESS_KEY_ID
const awsSecretAccessKey = process.env.AWS_SECRET_ACCESS_KEY
const awsRegion = process.env.AWS_REGION
Expand All @@ -36,6 +37,18 @@ export function getModel() {
}
}

// Gemini 3 Pro
if (gemini3ProApiKey) {
const google = createGoogleGenerativeAI({
apiKey: gemini3ProApiKey,
})
try {
return google('gemini-3-pro-preview')
} catch (error) {
console.warn('Gemini 3 Pro API unavailable, falling back to next provider:', error)
}
}

// AWS Bedrock

if (awsAccessKeyId && awsSecretAccessKey) {
Expand Down