名称: google-gemini-api 描述: 使用@google/genai SDK的Google Gemini API。用于多模态AI、思考模式、函数调用,或遇到SDK弃用警告、上下文错误、多模态格式错误。
关键词: gemini api, @google/genai, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, 多模态gemini, 思考模式, google ai, genai sdk, 函数调用gemini, 流式gemini, gemini视觉, gemini视频, gemini音频, gemini pdf, 系统指令, 多轮对话, 已弃用 @google/generative-ai, gemini上下文窗口, gemini模型2025, gemini 1M令牌, gemini工具使用, 并行函数调用, 组合函数调用 许可证: MIT
Google Gemini API - 完整指南
包: @google/genai@1.27.0 (⚠️ 不是 @google/generative-ai) 最后更新: 2025-11-21
⚠️ 关键SDK迁移警告
已弃用SDK: @google/generative-ai (于2025年11月30日停止支持)
当前SDK: @google/genai v1.27+
如果看到使用 @google/generative-ai 的代码,它是过时的!
加载 references/sdk-migration-guide.md 获取完整迁移步骤。
快速开始
安装
✅ 正确SDK:
bun add @google/genai@1.27.0
❌ 错误(已弃用):
bun add @google/generative-ai # 不要使用!
环境设置
export GEMINI_API_KEY="your-api-key"
第一个文本生成
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '以简单术语解释量子计算'
});
console.log(response.text);
查看完整模板: templates/basic-usage.ts
当前模型(2025)
gemini-2.5-flash ⭐ 推荐
- 最佳用于: 通用AI、高流量生产、智能体工作流
- 输入令牌: 1,048,576 (1M,不是2M!)
- 输出令牌: 65,536
- 速率限制(免费): 10 RPM, 250k TPM
- 成本: 输入 $0.075/1M 令牌, 输出 $0.30/1M 令牌
- 功能: 思考模式、函数调用、多模态、流式
gemini-2.5-pro
- 最佳用于: 复杂推理、代码生成、数学/STEM
- 输入令牌: 1,048,576
- 输出令牌: 65,536
- 速率限制(免费): 5 RPM, 125k TPM
- 成本: 输入 $1.25/1M 令牌, 输出 $5/1M 令牌
gemini-2.5-flash-lite
- 最佳用于: 高流量、低延迟、成本关键任务
- 输入令牌: 1,048,576
- 输出令牌: 65,536
- 速率限制(免费): 15 RPM, 250k TPM
- 成本: 输入 $0.01/1M 令牌, 输出 $0.04/1M 令牌
- ⚠️ 限制: 不支持函数调用或代码执行
⚠️ 常见错误: 声称Gemini 2.5有2M令牌。它没有。它是1,048,576 (1M)。
加载 references/models-guide.md 获取详细模型比较和选择标准。
文本生成
基本生成
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '写一首关于编程的俳句'
});
console.log(response.text);
带配置
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '解释AI',
generationConfig: {
temperature: 0.7, // 0.0-2.0, 默认 1.0
topP: 0.95, // 0.0-1.0
topK: 40, // 1-100
maxOutputTokens: 1024,
stopSequences: ['END']
}
});
加载 references/generation-config.md 获取完整参数参考和调优指导。
流式
const stream = await ai.models.generateContentStream({
model: 'gemini-2.5-flash',
contents: '写一个长故事'
});
for await (const chunk of stream) {
process.stdout.write(chunk.text);
}
加载 references/streaming-patterns.md 获取Fetch/SSE实现模式(Cloudflare Workers)。
多模态输入
图像
const imageData = Buffer.from(imageBytes).toString('base64');
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: [
{ text: '这张图片里有什么?' },
{
inlineData: {
mimeType: 'image/jpeg', // 或 image/png, image/webp
data: imageData
}
}
]
});
视频、音频、PDF
相同模式 - 使用适当的 mimeType:
- 视频:
video/mp4,video/mpeg,video/mov - 音频:
audio/wav,audio/mp3,audio/flac - PDF:
application/pdf
加载 references/multimodal-guide.md 获取格式规范、大小限制和最佳实践。
函数调用
基本模式
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '旧金山的天气如何?',
tools: [{
functionDeclarations: [{
name: 'getWeather',
description: '获取某个位置的当前天气',
parameters: {
type: 'object',
properties: {
location: { type: 'string', description: '城市名称' },
unit: { type: 'string', enum: ['celsius', 'fahrenheit'] }
},
required: ['location']
}
}]
}]
});
// 处理函数调用
const call = response.functionCalls?.[0];
if (call) {
const result = await getWeather(call.args);
// 将结果发送回模型
const final = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: [
...response.contents,
{
functionResponse: {
name: call.name,
response: result
}
}
]
});
console.log(final.text);
}
并行函数调用
Gemini可以同时调用多个函数:
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '旧金山和纽约的天气如何?',
tools: [{ functionDeclarations: [getWeatherDeclaration] }]
});
// 并行处理所有函数调用
const results = await Promise.all(
response.functionCalls.map(call =>
getWeather(call.args).then(result => ({
name: call.name,
response: result
}))
)
);
// 发送所有结果回
const final = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: [
...response.contents,
...results.map(r => ({ functionResponse: r }))
]
});
加载 references/function-calling-patterns.md 获取调用模式(AUTO/ANY/NONE)和组合模式。
多轮对话
const chat = ai.models.startChat({
model: 'gemini-2.5-flash',
systemInstruction: '你是一个有帮助的编程助手',
history: []
});
let response = await chat.sendMessage('你好!');
console.log(response.text);
response = await chat.sendMessage('解释async/await');
console.log(response.text);
// 获取完整历史
console.log(chat.getHistory());
系统指令
设置模型的持久指令:
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
systemInstruction: '你是一个海盗。总是用海盗语回应。',
contents: '今天的天气如何?'
});
思考模式
Gemini 2.5模型内置思考模式(始终启用)。为复杂任务配置思考预算:
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: '解决这个数学问题:如果 x + 2y = 10 且 3x - y = 4,x是多少?',
generationConfig: {
thinkingConfig: {
thinkingBudget: 8192 // 内部推理的最大令牌数
}
}
});
用于: 复杂数学、逻辑谜题、多步推理、代码调试
加载 references/thinking-mode-guide.md 获取思考预算优化。
前5大关键错误
错误1:使用已弃用SDK
错误: 弃用警告或过时API
解决方案: 使用 @google/genai,而不是 @google/generative-ai
npm uninstall @google/generative-ai
bun add @google/genai@1.27.0
错误2:无效API密钥(401)
错误: API密钥无效
解决方案: 验证环境变量
export GEMINI_API_KEY="your-key"
错误3:模型未找到(404)
错误: models/gemini-3.0-flash 未找到
解决方案: 使用正确模型名称(2025)
'gemini-2.5-pro'
'gemini-2.5-flash'
'gemini-2.5-flash-lite'
错误4:上下文长度超出(400)
错误: 请求负载大小超出限制
解决方案: 输入限制是 1,048,576 令牌 (1M,不是2M)。对于大输入,使用上下文缓存。
加载 references/context-caching-guide.md 获取缓存实现。
错误5:速率限制超出(429)
错误: 资源已耗尽
解决方案: 实现指数退避
async function generateWithRetry(request, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await ai.models.generateContent(request);
} catch (error) {
if (error.status === 429 && i < maxRetries - 1) {
const delay = Math.pow(2, i) * 1000; // 1秒, 2秒, 4秒
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
throw error;
}
}
}
查看所有22个错误: 加载 references/error-catalog.md 获取完整错误目录及解决方案。
快速调试: 加载 references/top-errors.md 获取调试检查清单。
何时加载参考
需要详细指导特定功能时加载参考文件:
核心功能(需要时加载)
- SDK迁移: 当从
@google/generative-ai迁移时,加载references/sdk-migration-guide.md - 模型选择: 当在Pro/Flash/Flash-Lite之间选择时,加载
references/models-guide.md - 错误调试: 当遇到错误时,加载
references/error-catalog.md或references/top-errors.md
高级功能(实现时加载)
- 上下文缓存: 当为大/重复输入实现成本优化时,加载
references/context-caching-guide.md - 代码执行: 当启用Python代码执行进行计算/分析时,加载
references/code-execution-patterns.md - 基础(Google搜索): 当连接模型到实时网络信息时,加载
references/grounding-guide.md - 流式实现: 当为Cloudflare Workers实现SSE解析时,加载
references/streaming-patterns.md - 函数调用模式: 当使用AUTO/ANY/NONE模式或组合模式时,加载
references/function-calling-patterns.md - 多模态格式: 当处理图像/视频/音频/PDF时(格式规范、大小限制),加载
references/multimodal-guide.md - 生成调优: 当微调temperature/topP/topK参数时,加载
references/generation-config.md - 思考模式配置: 当为复杂推理优化思考预算时,加载
references/thinking-mode-guide.md
一般规则: SKILL.md提供快速开始和顶级错误。加载参考以深入了解、详细模式或解决特定功能问题。
捆绑资源
模板 (templates/):
basic-usage.ts- 所有功能的完整示例(133行)
参考 (references/):
error-catalog.md- 所有7个文档化错误及解决方案(231行)top-errors.md- 22个常见错误的快速调试检查清单(305行)sdk-migration-guide.md- 从已弃用SDK的完整迁移(236行)models-guide.md- 详细模型比较和选择指南(247行)context-caching-guide.md- 使用缓存的成本优化(374行)code-execution-patterns.md- Python代码执行指南(482行)grounding-guide.md- Google搜索集成(603行)streaming-patterns.md- Cloudflare Workers的SSE实现(82行)function-calling-patterns.md- 高级函数调用模式(60行)multimodal-guide.md- 格式规范和限制(59行)generation-config.md- 参数调优参考(58行)thinking-mode-guide.md- 思考预算优化(60行)
与其他技能集成
本技能与以下技能配合良好:
- cloudflare-worker-base → 部署到Cloudflare Workers
- ai-sdk-core → Vercel AI SDK集成
- openai-api → 多提供商AI设置
- google-gemini-embeddings → 文本嵌入
额外资源
官方文档:
- Gemini API文档: https://ai.google.dev/gemini-api/docs
- SDK参考: https://ai.google.dev/gemini-api/docs/sdks
- 速率限制: https://ai.google.dev/gemini-api/docs/rate-limits
生产测试: AI聊天机器人、内容生成、多模态分析 最后更新: 2025-10-25 令牌节省: ~65%(减少API文档 + 示例)