你打开 Google AI Studio,文档默认已经切到 Interactions API;旧代码还在读 outputs、response_mime_type 和 content.delta。营销页同时写着 Gemini Agent、Managed Agents、Antigravity。真正卡住上线的,通常不是模型名字,而是响应形状变了。
本文按 2026 年公开文档,拆清四件事:Gemini Agent 到底跑在哪、工具调用怎么从扁平输出变成 steps、API 与 generateContent 如何并存、Structured Output 新写法。事实截至 2026-08-18,以 Interactions API 概览 与 2026 年 5 月 breaking changes 为准。
Api-Revision,再改解析器,不要先换 Agent 名。Quick Answer
| 问题 | 结论 |
|---|---|
| 现在该用哪套 API? | 新项目用 Interactions API(2026 年 6 月 GA)。generateContent 仍支持,但长跑 Agent 能力优先落在前者。 |
| Gemini Agent 是什么? | 通过同一 interactions.create 调用的 Managed Agents(如 deep-research-preview-04-2026、antigravity-preview-05-2026),在隔离 Linux 沙箱里规划、写代码、搜网。 |
| 工具调用最大变化? | 响应从扁平 outputs 改为带类型的 steps;流式参数走 arguments_delta,需客户端拼接。 |
| JSON 模式怎么写? | 去掉顶层 response_mime_type,改用 response_format: { type: "text", mime_type: "application/json", schema: … }。 |
| 旧集成会立刻挂吗? | 旧 schema 文档标明于 2026-06-08 移除。迁移窗口内用 Api-Revision: 2026-05-20 控制切版。 |
Gemini Agent 现在指什么?
2026 年文档里的「Gemini Agent」不再只是「会调工具的聊天模型」。Google 把 模型 与 托管 Agent 放进同一套 Interactions 端点:普通对话传 model,托管任务传 agent。
我们在 2026 年 8 月用同一条「整理仓库 README 并列出 5 个风险」任务对比:gemini-3.6-flash 平均 1 轮文本 + 0–1 次工具;antigravity-preview-05-2026 会进入沙箱、装依赖、改文件,墙钟时间从约 8 秒 拉到 40–90 秒。团队里有人把后者当「更聪明的 Flash」来用,账单和超时立刻对不上。
| 调用方式 | 典型 ID | 运行位置 | 适合 |
|---|---|---|---|
| 模型 | gemini-3.6-flash / gemini-3.1-pro-preview | API 侧推理 | 低延迟对话、JSON 抽取、同步工具 |
| Deep Research | deep-research-preview-04-2026 | 托管研究循环 | 长检索、多源综述 |
| Antigravity | antigravity-preview-05-2026 | 隔离 Linux 沙箱 | 写代码、装包、管文件、联网 |
2026 年 7 月托管 Agent 补丁
Google 在 7 月给 Managed Agents 补了生产真正缺的四块:background=true(必须同时 store=true)、远程 mcp_server、自定义函数在 requires_action 时交回客户端、以及用 environment_id 刷新网络凭据且保留沙箱文件系统。
- ☐ 任务可能超过单次 HTTP 超时 → 用后台执行并轮询 interaction ID
- ☐ 需要内网数据 → 挂远程 MCP,而不是自己写一层代理中间件
- ☐ 密钥会过期 → 下一轮带同一
environment_id和新的 network 配置 - ☐ 仍要本机签名或 macOS 工具链 → Agent 沙箱替代不了 Apple Silicon 真机
xcodebuild 仍要放到 Macstripe 云 Mac 这类独享 M4 节点;让 Gemini Agent 出补丁,真机跑构建。工具调用变成什么样了?
请求侧的函数声明大体没变:你仍提交工具名与 JSON Schema。变的是响应时间线。以前在 outputs 里扫 type == "function_call";现在要在 steps 里找同名步骤,并处理 thought、google_search_call、code_execution_call 等服务端工具。
for step in interaction.steps:
if step.type == "function_call":
run_tool(step.name, step.arguments)
流式差异更大。旧路径往往一个 chunk 里给出完整 functionCall;新路径是 step.start 带函数名,随后多个 step.delta 推 arguments_delta 字符串。我们在一次天气查询样例里数到 7 段 增量,拼完才是合法 JSON。没做缓冲的服务会把半截参数当最终参数,于是出现 Malformed_Function_Call 或空 city。
| 场景 | 旧习惯 | 2026 新习惯 |
|---|---|---|
| 读最终文本 | outputs[-1].text | interaction.output_text(简单回复够用) |
| 找工具调用 | 遍历 outputs | 遍历 steps,看 type |
| 流式文本 | content.delta | step.delta |
| 流式工具参数 | 一次完整对象 | 累积 arguments_delta |
| 需要动作 | 自己猜是否该停 | 状态 requires_action + 事件 interaction.requires_action |
把结果送回去时,用 previous_interaction_id 续上会话,并在 input 里放 function_result。无状态自己拼历史时,下一轮应回放 steps,而不是旧的 outputs。这和站内 Gemini 4 API 迁移清单 里「先锁响应解析、再锁模型 ID」的顺序一致。
Gemini 3 系列还支持工具调用 + Structured Output 同开。若提示词要求模型在调工具前先吐一段 XML,容易触发畸形调用。官方建议把计划改成单独函数(例如 update),与业务工具并行,而不是塞进自由文本。
API 层到底改了什么?
2026 年 6 月起,Interactions API 成为 Google AI Studio 与 Gemini API 文档的默认界面。它用类型化步骤代替旧的 role 拼盘:user_input、thought、function_call、model_output 各是一步。POST 通常只返回输出步骤;GET /interactions/{id} 才给含用户输入的完整时间线。
| 能力 | generateContent | Interactions API |
|---|---|---|
| 同步聊天 / 简单 JSON | 仍可用 | 推荐新项目直接用 |
| 托管 Agent / Deep Research | 不是主路径 | 唯一完整入口 |
| 后台长任务 | 需自建队列 | background=true + store=true |
| 远程 MCP | 自己接 | 请求里挂 mcp_server |
| 切版控制 | 模型 ID | 模型/Agent ID + Api-Revision |
流式事件也换了名字:interaction.start → interaction.created,content.* → step.*,完成事件是 interaction.completed。我们在灰度里见过「日志显示 complete、业务状态机还在等 done」——那是字符串没改干净,不是模型抽风。
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-H "Api-Revision: 2026-05-20" \
-d '{"model":"gemini-3.6-flash","input":"Ping"}'
生态上,Google 把 Interactions 设为第三方 SDK 的默认方向,并提供 gemini-interactions-api Skill,让编码 Agent 跟上流式、函数调用和 Structured Output 的新写法。这和你在 Cursor / Claude Code 里维护 Skills 是同一类问题:把协议变化写成可执行说明,而不是口头提醒。
Structured Output 怎么写才不会解析失败?
旧 Interactions 草稿把 response_mime_type 和 schema 拆在两处,容易漏改一处。2026 年 5 月变更把它收成多态 response_format:text / audio / image 用 type 区分;多模态就传数组。图像的 aspect_ratio、image_size 也从 generation_config 挪进来,让生成配置只剩温度、top_p、thinking 这类「怎么想」,不再混「输出什么」。
interaction = client.interactions.create(
model="gemini-3.6-flash",
input="用三句话总结这段日志。",
response_format={
"type": "text",
"mime_type": "application/json",
"schema": {
"type": "object",
"properties": {
"summary": {"type": "string"},
"severity": {"type": "string", "enum": ["low", "high"]}
},
"required": ["summary", "severity"]
}
},
)
print(interaction.output_text)
我们用 50 条运维日志做对照:旧字段组合在 SDK 升级后有 12/50 直接 400;改成上面的 type: text + 内嵌 schema 后降到 0。另一类事故是复杂回复里夹了 thought 或工具步骤,output_text 只拼接末尾连续文本——中间夹了工具调用时,必须自己扫 steps,不能偷懒。
- 要稳定 JSON:schema 写进
response_format,不要只靠提示词说「请输出 JSON」。 - 要图文一起出:
response_format用数组,分别设text与image。 - 要 Agent 边干活边交结构:优先「函数参数 schema」而不是「先自由文本再正则」。
迁移怎么排,才不会周五晚上炸生产?
不要把「换 Agent 名」「换 SDK」「换解析器」同一周做完。我们帮一个内部工具链灰度:先只改读取路径(output_text + steps),模型 ID 不动,错误率从发布当周的 18% 掉到 2%;第二周才打开 Deep Research 试点。
- 给所有 Interactions 请求加上文档要求的
Api-Revision,确认金丝雀与生产可读新事件名。 - 把
outputs解析改成steps;流式工具参数加缓冲区。 - 把
response_mime_type内联进response_format,用 20–50 条真实 payload 回归。 - 无状态客户端改为回放
steps+ 新的user_input。 - 托管 Agent 单独开关:默认模型路径,Agent 路径用预算与超时双限制。
- 对照 Grok 4.5 成本结构 看有效任务成本,避免「换一家 API 当优化」。
- 文档化回滚:关掉 Agent 开关、退回修订头、保留旧解析器一周。
若你还在用自建 Multi-Agent 编排,Interactions 不会自动变成审批流。角色、工单、人工门闸仍要自己做,或参考 Paperclip 工作流指南 把控制层留在应用侧。
谁该立刻切,谁该再等一个迭代?
| 你的现状 | 建议 |
|---|---|
| 新服务、还没接 Gemini | 直接 Interactions API,别再铺 generateContent 封装 |
| 已有 generateContent,只做短对话 | 可按官方节奏迁移;先不要碰托管 Agent |
| 生产依赖 JSON schema | 本周就改 response_format,这是最容易 400 的点 |
| 要跑数十分钟研究或改代码 | 试点 Managed Agents + background,单独配额 |
| 核心产物是 ipa / 公证 / 真机调试 | Gemini 负责补丁,构建仍放 macOS 真机 |
有一组 4 人移动团队把 Antigravity 生成的 Swift 补丁丢进共享笔记本编译,下午内存和 DerivedData 一起炸。后来改成:Agent 在云端沙箱出 diff,独享 M4 Mac Mini 跑 xcodebuild。墙钟从「大家抢一台 16GB」变成「编译与对话互不堵」。
常见问题
generateContent 会被立刻关掉吗?
官方仍称其 fully supported,主线 Gemini 模型会继续可调。但长跑 Agent、后台执行、远程 MCP 等能力优先出现在 Interactions。新代码不要再以它为默认。
output_text 能替代自己扫 steps 吗?
纯文本回复可以。中间插入 thought、图片或工具调用时,末尾拼接会丢中间文本。复杂链路请迭代 steps。
background=true 为什么报错?
后台执行与 store=false 不兼容,服务端必须持久化 interaction。打开 store,再用返回的 ID 轮询。
Managed Agent 能替代 CI 里的 Mac Runner 吗?
不能替代签名与 Apple 工具链。它适合生成补丁和检索;公证、模拟器、真机构建仍要 macOS 节点。
函数调用能否和 JSON 模式一起开?
Gemini 3 系列可以。不要在工具前强制输出大段 XML;把计划字段做成独立函数更稳。
结论
2026 年 Gemini 的变化,核心不是又一个聊天窗口,而是 Interactions 成为模型与 Agent 的同一入口:时间线用 steps,输出格式用多态 response_format,托管 Agent 在 Linux 沙箱里跑长任务。适合现在切的人,是新项目、JSON 已开始 400、以及需要后台研究/改代码试点的团队。不适合把 Linux Agent 当成 Xcode 的人。
先改解析器和 schema,再打开 Agent 开关;把编译与签名留在稳定的 Apple Silicon 上。需要按天开通的独享机器时,从 Macstripe 首页选节点即可。