iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
AI Engineering

30 天從資料處理、分析到生成式 AI 的整合應用與實作學習系列 第 17 篇

延續簡易Tool Calling,處理 Function Response

  • 分享至 

  • xImage
  •  

由於目前 Gemini 只知道自己選了哪一個 Tool,分析結果透過 executeTool() 存在 realAnalysisData,卻還不知道 Java 最後算出的結果是什麼。今天接著學如何加入 Function Response,把 Tool 執行完成的結果再傳回 Gemini。

Function Response 要做什麼?

間單來說它跟昨天的 functionCall 剛好是反過來的變成從 Gemini → Java ,告訴 Java:「我要使用這個 Tool」,將 executeTool() 分析的結果直接放入 functionResponse,再傳回 Gemini。
https://ithelp.ithome.com.tw/upload/images/20260930/20184235lF4DJGEHwV.png

為什麼需要第二次 Request?

第一次 Request 先把使用者的問題傳給 Gemini,讓它判斷需要哪個 Tool,並回傳 functionCall。Java 收到之後,再透過 executeTool() 執行真正的分析。
但到這裡只有 Java 知道分析結果,Gemini 還不知道,所以需要把結果放進 functionResponse:
https://ithelp.ithome.com.tw/upload/images/20260930/20184235WYqScmUSQz.png
再進行第二次 Request,把 Java 算出的結果交回 Gemini,這樣 Gemini 才能根據使用者原本的問題和實際分析資料產生回答。

遇到的問題:API 請求上限

https://ithelp.ithome.com.tw/upload/images/20260930/20184235DGqx5DiKCD.png
今天測試時還遇到 API 請求次數限制的問題。因為完成的簡易 Tool Calling 流程不只呼叫一次 Gemini。第一次 Request 讓 Gemini 判斷使用哪個 Tool,Java 執行完成後,第二次還要把 functionResponse 傳回 Gemini 取得最後回答。我將之前其他判斷先註解也於事無補。這也讓我發現,除了程式本身能不能執行之外,實際串接 API 時還需要注意服務本身的 Rate Limit,所以決定暫時退回昨天的版本,先保留 functionCall → executeTool() 的部分,之後再找別的方法調整 API 的呼叫方式。


上一篇
認識 Tool Calling 的運作流程
下一篇
資料輸入方式:Scanner 與 HTTP Request
系列文
30 天從資料處理、分析到生成式 AI 的整合應用與實作學習 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言