Skip to main content
Gemini 原生格式完整支援 Function Calling:模型輸出”想調哪個函式 + 引數”,你本地執行後把結果回傳,模型給出最終回答。整體迴圈與 OpenAI 的 FC 一致,但欄位格式完全不同,不能混用。 本頁基於 Google 官方文件整理(ai.google.dev/gemini-api/docs/function-calling,2026年6月資料)。

與 OpenAI 格式的差異速查

注意一個易錯點:Gemini 的 function_call.args結構化物件,不是 JSON 字串,不需要 json.loads

完整呼叫迴圈

Gemini 3 系列的思維簽名(thought signature)必須回傳:模型返回的 function_call part 裡帶有加密的 thought_signature,第二次請求時要把整個模型回覆 Content 原樣加進歷史(如上例第 4 步),簽名缺失會導致推理鏈斷裂甚至請求報錯。用官方 google-genai SDK 按上面的寫法即可自動帶上;手寫 REST 請求時不要剝掉該欄位。

呼叫模式(mode)

並行與多步呼叫

  • 並行呼叫:一輪裡模型可能返回多個 function_call part(如同時查兩個城市),逐個執行後把全部 function_response 一起回傳
  • 多步呼叫:模型可以”調函式 → 看結果 → 再調下一個”鏈式推進,迴圈處理直到響應裡不再有 function_call。給迴圈設最大輪數,避免失控燒錢

最佳實踐

  • description 寫給模型看:說清”什麼時候該調我”,引數能用 enum 收窄就別用自由字串
  • 工具定義保持穩定:參與快取字首匹配,頻繁變動會破壞 快取命中
  • 需要確定性 JSON 輸出而非呼叫外部工具時,考慮用 response_schema 結構化輸出代替 FC(見 原生呼叫 參數列)
  • 沙箱計算類任務可以直接用 code_execution 工具,不必自己實現計算函式

常見踩坑

相關連結