api

Gemini API 调用指南:Interactions 与 GenerateContent

直接答案Google 已推荐新项目使用 Interactions API;本站当前公开的 Gemini 原生兼容路径仍以 GenerateContent 为主,两套请求与流式解析不能混用。

更新 · 审核信息

先区分官方推荐与本站兼容范围

Google 已在 2026 年 6 月把 Interactions API 设为 GA,并推荐所有新项目使用;原 generateContent 仍受支持,但已归为 Legacy。本站是否支持某个端点取决于网关适配,不能因为 Google 已发布 /v1beta/interactions 就假设本站也已开放。当前公开的 Gemini 原生兼容路径确定是 GenerateContent。

通过本站调用 GenerateContent

本站推荐使用 Authorization: Bearer;为兼容 Gemini 原生客户端,/v1beta/models/... 路径也接受本站密钥形式的 x-goog-api-key。模型名位于 URL 中并应来自模型广场contents[].parts 可组合文本和模型支持的多模态输入;不要发送官方单模型页未声明的内容类型。

curl "$BASE_URL/v1beta/models/MODEL_NAME:generateContent" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"只回复:连接成功"}]}]}'

直连 Google 的 Interactions 形态

直连 Google 使用 x-goog-api-key。Interactions 调用 POST /v1beta/interactions,把 modelinput 放入 JSON;响应包含 idstatususage 与类型化 steps[]。SDK 的 output_text 适合读取简单最终文本,遇到思考、工具、图片或音频交错时必须按 type 遍历 steps。

多轮可用 previous_interaction_id,但工具、system instruction 和 generation config 不会自动继承,应在后续请求中重发。store=false 适合不希望服务端保存交互的场景,但不能再依赖已存储交互续接。

两套响应和流式事件不能混用

GenerateContent 返回 candidatesfinishReasonpromptFeedback 和安全信息;Interactions 使用 interaction.createdstep.start/delta/stopinteraction.completed 等类型化 SSE 事件。函数调用在新协议中也是独立 step,不再是简单替换 function response part。HTTP 200 后仍可能出现流内错误,客户端要容忍未知事件并等待明确完成事件。

错误与重试

401 检查认证,403 检查权限,404 检查模型或资源,429 可能是速率或配额。先读错误 statusmessage 再处理 5xx:过载或临时服务故障可有限退避,但 GenerateContent 的输入或上下文过长也可能表现为 500504,此时必须缩短请求而不是重试。参数、安全拦截和配额问题同样需要修正请求或账户。保存请求 ID、错误 code、status 与最终 step,参见 API 报错排查

迁移前必须核验的边界

Interactions 尚未覆盖 GenerateContent 的全部能力,例如部分视频 metadata、Batch、显式缓存和自定义安全设置。迁移前逐项核验目标型号、/v1/v1beta、文件限制、工具、结构化输出、存储策略与数据政策,并分别保留两套契约测试;不要只改 URL。

适用场景

  • 多模态理解
  • 长上下文推理
  • 文本与媒体生成

API 协议

  • /v1beta/models/{model}:generateContent
  • /v1beta/models/{model}:streamGenerateContent

FAQ

新项目应该使用 Interactions 还是 GenerateContent?

直连 Google 的新项目优先评估 Interactions;通过本站调用时,只能使用模型广场和协议页明确列出的已适配端点,当前 Gemini 原生兼容路径仍以 GenerateContent 为主。

能否只把 generateContent 的 URL 改成 /interactions?

不能。Interactions 把 model 与 input 放入请求体,响应改为 status、steps 和 usage,流式事件与函数结果也不同,必须更换请求构造和解析器。

generateContent 已经不能使用了吗?

不是。Google 将其标为 Legacy,但仍明确表示继续支持;已有项目可按业务节奏迁移,并先核验 Interactions 尚未覆盖的能力。

为什么 HTTP 200 却没有可见文本?

检查 Interactions 的 status 与各类 steps,或 GenerateContent 的 candidates、finishReason、promptFeedback 和安全反馈;工具调用、拦截和流内错误都可能没有普通文本。

本站和直连 Google 的认证请求头一样吗?

本站推荐统一使用 Authorization: Bearer,也兼容 Gemini 原生路径的 x-goog-api-key;直连 Google 使用 x-goog-api-key。两种方式都不要在浏览器代码、URL 或日志中暴露长期密钥。

官方来源

  1. Gemini API Documentation Official
  2. Gemini Interactions API Overview Official
  3. Gemini API Getting Started Official
  4. Migrate to the Interactions API Official
  5. Gemini API Streaming Official
  6. Gemini Function Calling Official
  7. Gemini API Errors Official
  8. Gemini GenerateContent API Errors Official