文档
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
类引用
函数引用
接口引用
类型别名引用
变量引用
适配器

Google Gemini

Google Gemini 适配器提供了访问 Google 的 Gemini 模型的功能,包括文本生成、使用 Imagen 进行图像生成以及实验性的文本到语音转换。

安装

sh
npm install @tanstack/ai-gemini

基本用法

typescript
import { chat } from "@tanstack/ai";
import { geminiText } from "@tanstack/ai-gemini";

const stream = chat({
  adapter: geminiText("gemini-2.5-pro"),
  messages: [{ role: "user", content: "Hello!" }],
});

基本用法 - 自定义 API 密钥

typescript
import { chat } from "@tanstack/ai";
import { createGeminiChat } from "@tanstack/ai-gemini";

const adapter = createGeminiChat(process.env.GEMINI_API_KEY!, {
  // ... your config options
});

const stream = chat({
  adapter: adapter("gemini-2.5-pro"),
  messages: [{ role: "user", content: "Hello!" }],
});

配置

typescript
import { createGeminiChat, type GeminiChatConfig } from "@tanstack/ai-gemini";

const config: Omit<GeminiChatConfig, 'apiKey'> = {
  baseURL: "https://generativelanguage.googleapis.com/v1beta", // Optional
};

const adapter = createGeminiChat(process.env.GEMINI_API_KEY!, config);

示例:聊天完成

typescript
import { chat, toServerSentEventsResponse } from "@tanstack/ai";
import { geminiText } from "@tanstack/ai-gemini";

export async function POST(request: Request) {
  const { messages } = await request.json();

  const stream = chat({
    adapter: geminiText("gemini-2.5-pro"),
    messages,
  });

  return toServerSentEventsResponse(stream);
}

示例:使用工具

typescript
import { chat, toolDefinition } from "@tanstack/ai";
import { geminiText } from "@tanstack/ai-gemini";
import { z } from "zod";

const getCalendarEventsDef = toolDefinition({
  name: "get_calendar_events",
  description: "Get calendar events for a date",
  inputSchema: z.object({
    date: z.string(),
  }),
});

const getCalendarEvents = getCalendarEventsDef.server(async ({ date }) => {
  // Fetch calendar events
  return { events: [] };
});

const stream = chat({
  adapter: geminiText("gemini-2.5-pro"),
  messages,
  tools: [getCalendarEvents],
});

模型选项

Gemini 支持各种模型特定的选项

typescript
const stream = chat({
  adapter: geminiText("gemini-2.5-pro"),
  messages,
  modelOptions: {
    maxOutputTokens: 2048,
    temperature: 0.7,
    topP: 0.9,
    topK: 40,
    stopSequences: ["END"],
  },
});

思考

为支持它的模型启用思考功能

typescript
modelOptions: {
  thinking: {
    includeThoughts: true,
  },
}

结构化输出

配置结构化输出格式

typescript
modelOptions: {
  responseMimeType: "application/json",
}

摘要

总结长文本内容

typescript
import { summarize } from "@tanstack/ai";
import { geminiSummarize } from "@tanstack/ai-gemini";

const result = await summarize({
  adapter: geminiSummarize("gemini-2.5-pro"),
  text: "Your long text to summarize...",
  maxLength: 100,
  style: "concise", // "concise" | "bullet-points" | "paragraph"
});

console.log(result.summary);

图像生成

使用 Imagen 生成图像

typescript
import { generateImage } from "@tanstack/ai";
import { geminiImage } from "@tanstack/ai-gemini";

const result = await generateImage({
  adapter: geminiImage("imagen-3.0-generate-002"),
  prompt: "A futuristic cityscape at sunset",
  numberOfImages: 1,
});

console.log(result.images);

图像模型选项

typescript
const result = await generateImage({
  adapter: geminiImage("imagen-3.0-generate-002"),
  prompt: "...",
  modelOptions: {
    aspectRatio: "16:9", // "1:1" | "3:4" | "4:3" | "9:16" | "16:9"
    personGeneration: "DONT_ALLOW", // Control person generation
    safetyFilterLevel: "BLOCK_SOME", // Safety filtering
  },
});

文本到语音 (实验性)

注意: Gemini TTS 处于实验阶段,可能需要 Live API 才能完全发挥功能。

从文本生成语音

typescript
import { generateSpeech } from "@tanstack/ai";
import { geminiSpeech } from "@tanstack/ai-gemini";

const result = await generateSpeech({
  adapter: geminiSpeech("gemini-2.5-flash-preview-tts"),
  text: "Hello from Gemini TTS!",
});

console.log(result.audio); // Base64 encoded audio

环境变量

将您的 API 密钥设置为环境变量

sh
GEMINI_API_KEY=your-api-key-here
# or
GOOGLE_API_KEY=your-api-key-here

获取 API 密钥

  1. 前往 Google AI Studio
  2. 创建一个新的 API 密钥
  3. 将其添加到您的环境变量中

API 参考

geminiText(config?)

使用环境变量创建一个 Gemini 文本/聊天适配器。

返回值: 一个 Gemini 文本适配器实例。

createGeminiText(apiKey, config?)

使用显式的 API 密钥创建一个 Gemini 文本/聊天适配器。

参数

  • apiKey - 您的 Gemini API 密钥
  • config.baseURL? - 自定义基础 URL (可选)

返回值: 一个 Gemini 文本适配器实例。

geminiSummarize(config?)

使用环境变量创建一个 Gemini 摘要适配器。

返回值: 一个 Gemini 摘要适配器实例。

createGeminiSummarize(apiKey, config?)

使用显式的 API 密钥创建一个 Gemini 摘要适配器。

返回值: 一个 Gemini 摘要适配器实例。

geminiImage(config?)

使用环境变量创建一个 Gemini 图像生成适配器。

返回值: 一个 Gemini 图像适配器实例。

createGeminiImage(apiKey, config?)

使用显式的 API 密钥创建一个 Gemini 图像生成适配器。

返回值: 一个 Gemini 图像适配器实例。

geminiTTS(config?)

使用环境变量创建一个 Gemini TTS 适配器。

返回值: 一个 Gemini TTS 适配器实例。

createGeminiTTS(apiKey, config?)

使用显式的 API 密钥创建一个 Gemini TTS 适配器。

返回值: 一个 Gemini TTS 适配器实例。

下一步