代理式人工智慧與工具使用
函式呼叫代理(function calling)
函式呼叫代理不只是描述自己想做什麼——它會發出一個結構化的呼叫,指名一個函式並填好其引數,讓執行環境可以直接執行。系統不是去解析「請幫我查台北的天氣」這類自由文字,而是給模型一份具型別的函式清單,模型則回覆 get_weather(city="Taipei")。由模型決定用哪個工具、帶什麼引數;主機才真正執行它並回傳結果。
每個工具都以名稱、描述,以及其參數的 JSON schema 來宣告。推論時,模型以這些宣告為條件,在適當時機產出一個符合 schema 的結構化物件;受約束解碼或在工具使用資料上微調,可確保輸出有效。主機依 schema 驗證引數、呼叫真正的函式,再把回傳值餵回上下文,讓模型繼續。如此便把脆弱的字串解析,轉成一個具型別、可檢查的介面。
schema 既是優勢也是極限:精確且描述良好的 schema 能引導模型產出正確、可解析的呼叫,模糊的 schema 則導致選錯工具或引數格式錯誤。驗證能防型別錯誤,卻擋不住語意問題——模型仍可能呼叫錯誤函式,或傳入看似合理卻不正確的值——因此對任何具副作用的操作,確認步驟與冪等或可逆的工具就格外重要。
{
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
// model emits -> {"name":"get_weather","arguments":{"city":"Taipei"}}一個具型別的工具宣告,以及模型為符合它而產出的結構化呼叫。
Schema 驗證只保證呼叫格式正確,不保證它是「對的」呼叫:型別正確的引數仍可能在語意上是錯的。
又称
另见