首页/AI/AI 应用速查/Gemini generateContent 接口

Gemini generateContent 接口

Google 的模型调用接口:POST .../v1beta/models/{model}:generateContent,请求体用 contents[].parts[],支持 systemInstruction、tools 与多模态行内数据。

AI 应用速查AI更新于 2026-10-13

generateContent 是什么

generateContent 是 Google Gemini 的模型调用接口,路径形如 POST /v1beta/models/{model}:generateContent,请求体用 contents[].parts[] 承载文本与图片等行内数据,系统提示单独放在 systemInstruction,函数工具放在 tools 字段;流式改成 :streamGenerateContent。鉴权用 x-goog-api-key 请求头(也支持 key 查询参数,但会落进代理与访问日志,不建议)。输出文本在 candidates[0].content.parts 中,被安全策略拦截时看 promptFeedback 与 finishReason。

基本信息

请求路径/v1beta/models/{model}:generateContent
流式路径/v1beta/models/{model}:streamGenerateContent
鉴权方式请求头 x-goog-api-key
请求结构contents → parts → text
系统提示systemInstruction 独立字段
响应取值candidates[0].content.parts[].text

典型使用场景

  • 多模态理解:图片、PDF 页面截图与文本混合输入后抽取信息
  • 长文档问答:把整篇材料放进 contents 做归纳
  • 工具调用:用 tools 声明函数,让模型产出调用参数
  • 流式前端:用 streamGenerateContent 降低首字延迟
  • 海外业务接入:多供应商路由中的一路候选

最小调用与参数

最小调用与参数
# 密钥走请求头,不要拼进 URL
export GEMINI_API_KEY=你的密钥
cat > payload.json <<'EOF'
{"systemInstruction":{"parts":[{"text":"你只回答技术问题"}]},
 "contents":[{"parts":[{"text":"用一句话解释 DNS"}]}],
 "generationConfig":{"temperature":0.2,"maxOutputTokens":256}}
EOF
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" -H "Content-Type: application/json" -d @payload.json

响应字段逐列读法

字段含义异常表现
candidates[0].content.parts模型输出,可能被拆成多段为空说明被拦截或未产生内容
finishReasonSTOP 正常、MAX_TOKENS 截断、SAFETY 拦截MAX_TOKENS 需提高上限或缩短输入
promptFeedback输入侧的安全判定结果blockReason 非空表示请求被拒
usageMetadata输入输出 token 计数为空时无法做成本对账

生成参数逐项读法

参数作用取值建议
temperature控制随机性抽取与分类取 0-0.3,创意写作再调高
maxOutputTokens输出长度上限太小会被截断,finishReason 显示 MAX_TOKENS
topP候选词采样范围通常不必同时调,与 temperature 二选一
stopSequences遇到即停止的字符串用于截断多余尾巴,注意不要误伤正常内容
responseMimeType声明返回格式需要结构化结果时配合 schema 使用
Gemini 用 contents 与 parts,而不是 OpenAI 的 messages 结构;直接把旧请求体搬过来会返回参数错误。迁移时要做请求体适配层。
被安全策略拦截不一定是模型出错:先看 promptFeedback 与 finishReason 定位是输入侧还是输出侧触发,再决定改写提示词还是补人工兜底。

易错点

  • 把请求体写成 messages 结构:字段不识别,接口直接报参数错误
  • 把 key 拼在 URL 查询串里:密钥会进入代理、浏览器历史与访问日志
  • 忽略 finishReason 直接取文本:截断或拦截时拿到半截内容被当成正常结果
  • parts 多段输出只取第一段:多段文本场景会漏内容,需按序拼接
  • 把行内图片编码写错格式:base64 缺少 mimeType 声明会导致请求被拒

数据来源与参考

  • Google AI 开发者文档 ai.google.dev

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌