Skip to main content

Google Generative AI Provider

The Google Generative AI provider enables you to use Google’s Gemini models for text generation, vision, code execution, and more.

Installation

npm install @ai-sdk/google

Setup

Get your API key from Google AI Studio and set it as an environment variable:
GOOGLE_GENERATIVE_AI_API_KEY=your-api-key

Usage

Basic Text Generation

import { google } from '@ai-sdk/google';
import { generateText } from 'ai';

const { text } = await generateText({
  model: google('gemini-2.0-flash'),
  prompt: 'Explain machine learning in simple terms.',
});

Streaming Responses

import { google } from '@ai-sdk/google';
import { streamText } from 'ai';

const result = streamText({
  model: google('gemini-2.0-flash'),
  prompt: 'Write a poem about nature.',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Structured Output

import { google } from '@ai-sdk/google';
import { generateObject } from 'ai';
import { z } from 'zod';

const { object } = await generateObject({
  model: google('gemini-2.0-flash'),
  schema: z.object({
    title: z.string(),
    summary: z.string(),
    tags: z.array(z.string()),
  }),
  prompt: 'Generate metadata for an article about renewable energy.',
});

Configuration

Custom Provider Instance

import { createGoogleGenerativeAI } from '@ai-sdk/google';

const google = createGoogleGenerativeAI({
  apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY,
  baseURL: 'https://generativelanguage.googleapis.com/v1beta',
});

Provider Options

  • apiKey: Your Google AI API key (defaults to GOOGLE_GENERATIVE_AI_API_KEY env var)
  • baseURL: Custom API endpoint URL
  • headers: Custom headers for requests

Available Models

Gemini 2.0 Family

  • gemini-2.0-flash - Fast and efficient
  • gemini-2.0-flash-exp - Experimental features

Gemini 1.5 Family

  • gemini-1.5-pro - Most capable model
  • gemini-1.5-flash - Fast and cost-effective

Advanced Features

Vision

import { google } from '@ai-sdk/google';
import { generateText } from 'ai';
import fs from 'fs';

const result = await generateText({
  model: google('gemini-2.0-flash'),
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'What is shown in this image?' },
        { type: 'image', image: fs.readFileSync('./image.jpg') },
      ],
    },
  ],
});

Code Execution

import { google } from '@ai-sdk/google';
import { generateText } from 'ai';

const { text } = await generateText({
  model: google('gemini-2.0-flash'),
  tools: {
    code_execution: google.tools.codeExecution({}),
  },
  prompt: 'Calculate the 20th Fibonacci number using Python.',
});

Google Search Grounding

import { google } from '@ai-sdk/google';
import { generateText } from 'ai';

const { text, sources } = await generateText({
  model: google('gemini-2.0-flash'),
  tools: {
    google_search: google.tools.googleSearch({}),
  },
  prompt: 'What are the latest AI developments?',
});

console.log('Answer:', text);
console.log('Sources:', sources);

PDF Support

import { google } from '@ai-sdk/google';
import { generateText } from 'ai';
import fs from 'fs';

const result = await generateText({
  model: google('gemini-2.0-flash'),
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Summarize this document.' },
        {
          type: 'file',
          data: fs.readFileSync('./document.pdf'),
          mediaType: 'application/pdf',
        },
      ],
    },
  ],
});

Embeddings

import { google } from '@ai-sdk/google';
import { embed } from 'ai';

const { embedding } = await embed({
  model: google.embedding('text-embedding-004'),
  value: 'Hello, world!',
});
Available Models:
  • text-embedding-004 (768 dimensions)

Image Generation

import { google } from '@ai-sdk/google';
import { generateImage } from 'ai';

const { image } = await generateImage({
  model: google.image('imagen-3.0-generate-001'),
  prompt: 'A futuristic city at night',
  aspectRatio: '16:9',
});
Available Models:
  • imagen-3.0-generate-001 - Latest Imagen model

Model Capabilities

ModelVisionToolsStructured Output
gemini-2.0-flash
gemini-1.5-pro
gemini-1.5-flash

Resources