簡單來說,Tool Calling(工具呼叫 / 函式呼叫 Function Calling)是讓 LLM 從「純文字聊天機器人」升級成「能操作外部系統的控制器」的核心技術。
它並不是讓 LLM 直接去執行程式碼,而是讓 LLM 能夠理解人類意圖,並將意圖精確轉換為程式看得懂的結構化數據(JSON)。
大語言模型(LLM)有兩個本質上的局限:
如果沒有 Tool Calling,當你問 AI:「台北今天天氣怎樣?」
get_weather 的 API 可以用,於是主動發出呼叫請求。許多人誤以為是 AI 直接跑去執行了 Python 或 API,但實際上 LLM 本身只負責「決定要用什麼工具與準備參數」,真正的執行是由你的應用程式(後端程式碼)來做的。
流程拆解如下:
[使用者] ──(1) 提問──> [LLM]
│
│ (2) 發現需要工具,輸出結構化 JSON
▼
[應用程式 (App)]
│
│ (3) 執行真正的 API / 程式碼
▼
[外部系統/數據庫]
│
│ (4) 回傳執行結果
▼
[應用程式 (App)] ──(5) 帶入結果──> [LLM] ──(6) 回答──> [使用者]
{
"name": "get_stock_price",
"description": "取得特定股票的即時價格",
"parameters": {
"symbol": "股票代碼,例如 NVDA, TSLA"
}
}
{
"tool_call": "get_stock_price",
"arguments": { "symbol": "NVDA" }
}
{"price": 135.5, "currency": "USD"}。| 特性 | 說明 |
|---|---|
| 結構化輸出 (Structured Output) | LLM 輸出嚴格符合 JSON Schema,便於程式碼解析與自動化串接。 |
| 多次/平行呼叫 (Parallel Tool Calling) | 現代模型(如 GPT-4o, Claude 3.5)支援一次發出多個工具請求(例如同時查詢台北、東京、紐約三地的天氣)。 |
| LLM 不直接接觸外部網路/資料庫 | 安全性由後端控制,LLM 只是發出「請求清單」,最終是否執行、如何過濾權限完全由後端程式掌控。 |
如果把 Agent(AI 代理) 比喻成一個人:
沒有 Tool Calling,Agent 就無法真正對現實世界產生影響。