由於目前 Gemini 只知道自己選了哪一個 Tool,分析結果透過 executeTool() 存在 realAnalysisData,卻還不知道 Java 最後算出的結果是什麼。今天接著學如何加入 Function Response,把 Tool 執行完成的結果再傳回 Gemini。
間單來說它跟昨天的 functionCall 剛好是反過來的變成從 Gemini → Java ,告訴 Java:「我要使用這個 Tool」,將 executeTool() 分析的結果直接放入 functionResponse,再傳回 Gemini。
第一次 Request 先把使用者的問題傳給 Gemini,讓它判斷需要哪個 Tool,並回傳 functionCall。Java 收到之後,再透過 executeTool() 執行真正的分析。
但到這裡只有 Java 知道分析結果,Gemini 還不知道,所以需要把結果放進 functionResponse:
再進行第二次 Request,把 Java 算出的結果交回 Gemini,這樣 Gemini 才能根據使用者原本的問題和實際分析資料產生回答。

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