你打開 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 首頁選節點即可。