Google Generative AI provider for AI SDK with language models, image generation, embeddings, and tool integrations
npx @tessl/cli install tessl/npm-ai-sdk--google@2.0.0@ai-sdk/google is a comprehensive Google Generative AI provider for the AI SDK, enabling developers to integrate Google's Generative AI APIs including Gemini models into their applications. It offers language model support for text generation, chat functionality, image generation capabilities, text embedding models, and built-in tool integrations.
npm install @ai-sdk/googleimport { createGoogleGenerativeAI, google } from "@ai-sdk/google";For CommonJS:
const { createGoogleGenerativeAI, google } = require("@ai-sdk/google");Internal APIs (for advanced usage):
import { GoogleGenerativeAILanguageModel, googleTools } from "@ai-sdk/google/internal";import { google } from "@ai-sdk/google";
import { generateText } from "ai";
// Use the default provider instance
const result = await generateText({
model: google("gemini-1.5-flash"),
prompt: "Tell me about the weather",
});
// Or create a custom provider with your API key
import { createGoogleGenerativeAI } from "@ai-sdk/google";
const google = createGoogleGenerativeAI({
apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY,
});
const result = await generateText({
model: google("gemini-1.5-pro"),
prompt: "Explain quantum computing",
});@ai-sdk/google is built around several key components:
createGoogleGenerativeAI() for creating configured provider instancesgoogle instance for immediate useCore provider functionality for configuring and creating Google Generative AI provider instances.
function createGoogleGenerativeAI(
options?: GoogleGenerativeAIProviderSettings
): GoogleGenerativeAIProvider;
const google: GoogleGenerativeAIProvider;
interface GoogleGenerativeAIProviderSettings {
baseURL?: string;
apiKey?: string;
headers?: Record<string, string>;
fetch?: typeof fetch;
generateId?: () => string;
}Text generation and chat functionality using Google's Gemini models with support for streaming, structured outputs, and advanced features.
interface GoogleGenerativeAIProvider {
/** Callable interface - shorthand for languageModel() */
(modelId: GoogleGenerativeAIModelId): LanguageModelV2<
GoogleGenerativeAIProviderOptions,
GoogleGenerativeAIProviderMetadata
>;
languageModel(modelId: GoogleGenerativeAIModelId): LanguageModelV2<
GoogleGenerativeAIProviderOptions,
GoogleGenerativeAIProviderMetadata
>;
chat(modelId: GoogleGenerativeAIModelId): LanguageModelV2<
GoogleGenerativeAIProviderOptions,
GoogleGenerativeAIProviderMetadata
>;
}
type GoogleGenerativeAIModelId =
| "gemini-1.5-flash"
| "gemini-1.5-flash-latest"
| "gemini-1.5-flash-001"
| "gemini-1.5-flash-002"
| "gemini-1.5-flash-8b"
| "gemini-1.5-flash-8b-latest"
| "gemini-1.5-flash-8b-001"
| "gemini-1.5-pro"
| "gemini-1.5-pro-latest"
| "gemini-1.5-pro-001"
| "gemini-1.5-pro-002"
| "gemini-2.0-flash"
| "gemini-2.0-flash-001"
| "gemini-2.0-flash-live-001"
| "gemini-2.0-flash-lite"
| "gemini-2.0-pro-exp-02-05"
| "gemini-2.0-flash-thinking-exp-01-21"
| "gemini-2.0-flash-exp"
| "gemini-2.5-pro"
| "gemini-2.5-flash"
| "gemini-2.5-flash-lite"
| "gemini-2.5-flash-image-preview"
| "gemini-2.5-pro-exp-03-25"
| "gemini-2.5-flash-preview-04-17"
| "gemini-exp-1206"
| "gemma-3-12b-it"
| "gemma-3-27b-it"
| (string & {});Image generation capabilities using Google's Imagen models for creating high-quality images from text prompts.
interface GoogleGenerativeAIProvider {
image(modelId: GoogleGenerativeAIImageModelId, settings?: GoogleGenerativeAIImageSettings): ImageModelV2<
GoogleGenerativeAIImageProviderOptions
>;
imageModel(modelId: GoogleGenerativeAIImageModelId, settings?: GoogleGenerativeAIImageSettings): ImageModelV2<
GoogleGenerativeAIImageProviderOptions
>;
}
type GoogleGenerativeAIImageModelId = "imagen-3.0-generate-002";Text embedding models for semantic search, similarity analysis, and vector operations.
interface GoogleGenerativeAIProvider {
textEmbedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2<
GoogleGenerativeAIEmbeddingProviderOptions
>;
textEmbeddingModel(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2<
GoogleGenerativeAIEmbeddingProviderOptions
>;
/** @deprecated Use textEmbedding() instead */
embedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2<
GoogleGenerativeAIEmbeddingProviderOptions
>;
}
type GoogleGenerativeAIEmbeddingModelId =
| "text-embedding-004"
| "gemini-embedding-001"
| (string & {});Google-specific tool integrations including web search, code execution, and URL content analysis.
interface GoogleGenerativeAIProvider {
tools: {
googleSearch: (options?: GoogleSearchOptions) => Tool;
urlContext: () => Tool;
codeExecution: () => Tool;
};
}interface GoogleErrorData {
error: {
code: number;
message: string;
status: string;
};
}The provider includes comprehensive error handling for Google API responses, with detailed error information and proper HTTP status code mapping.
interface GoogleGenerativeAIProvider extends ProviderV2 {
/** Callable interface - shorthand for languageModel() */
(modelId: GoogleGenerativeAIModelId): LanguageModelV2;
languageModel(modelId: GoogleGenerativeAIModelId): LanguageModelV2;
chat(modelId: GoogleGenerativeAIModelId): LanguageModelV2;
image(modelId: GoogleGenerativeAIImageModelId, settings?: GoogleGenerativeAIImageSettings): ImageModelV2;
imageModel(modelId: GoogleGenerativeAIImageModelId, settings?: GoogleGenerativeAIImageSettings): ImageModelV2;
textEmbedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2;
textEmbeddingModel(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2;
/** @deprecated Use textEmbedding() instead */
embedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV2;
/** @deprecated Use chat() instead */
generativeAI(modelId: GoogleGenerativeAIModelId): LanguageModelV2;
tools: {
googleSearch: (options?: GoogleSearchOptions) => Tool;
urlContext: () => Tool;
codeExecution: () => Tool;
};
}
interface GoogleGenerativeAIProviderMetadata {
groundingMetadata?: GoogleGenerativeAIGroundingMetadata[];
urlContextMetadata?: GoogleGenerativeAIUrlContextMetadata[];
safetyRatings?: SafetyRating[];
}