接下來往自動化再邁進一步,今天開始認識 Tool Calling,主要是想要讓 Gemini 可以更動態的選擇功能。從原本利用 Prompt 規定 Gemini 四選一回傳適合的功能名稱,改成透過 Tool Calling,它就可以自行判斷是否需要呼叫 Tool 。
一個可以使用的 Tool 通常包含 Tool 的名稱(name)、用途(description)以及需要的參數(schema)。這些資訊會提供給 Gemini,讓它可以理解每個 Tool 是做什麼的,再根據使用者的問題判斷需要使用哪一個。
基本的流程會如下:
functionCall, Java 取得需要的 ToolexecuteTool() 執行對應分析
這裡的 name 是 Tool 的名稱,而 description 則是告訴 Gemini 這個 Tool 可以做什麼。這次把原本的四個分析功能都放進 functionDeclarations , Gemini 就可以根據這些描述和使用者的問題判斷需要哪個 Tool。
就像是 Gemini 跟 Java 的通訊系統一樣。透過 Function Call , Gemini 就可以告訴 Java 「我要使用這個 Tool 」。
這裡又用到前面學過的 Gson ,先確認回傳內容中有沒有 functionCall,有的話再取得裡面的 name,就可以知道 Gemini 想要使用哪一個 Tool。
原本以為 Tool Calling 就只是讓 AI,但實際做過後發現在讓 Gemini 選擇之前,還需要先描述有哪些 Tool、每個 Tool 可以做什麼。Gemini 判斷後也不是直接執行 Java 程式,而是先透過 functionCall 告訴 Java要使用哪個 Tool,再由 Java 執行真正的分析。