工具呼叫的第一課:把函式描述寫得讓模型看得懂
Agent 不聽話,八成問題出在工具描述。這篇講清楚描述該寫什麼、不該寫什麼。
工具呼叫的準確率,很大程度取決於你怎麼描述那個工具。模型看不到你的實作,它只有名稱、描述與參數 schema 三樣資訊。
描述要回答三個問題
- 這個工具做什麼:用一句話講結果,不是講實作。
- 什麼時候該用:明確的觸發條件。
- 什麼時候不該用:與其他相似工具的分界,這條最常被忽略。
{
"name": "search_orders",
"description": "依訂單編號或會員信箱查詢訂單狀態與明細。\n用於使用者詢問「我的訂單」「出貨了嗎」「付款成功了嗎」。\n不要用於查詢商品庫存或退款進度,那些請用 check_stock 與 refund_status。",
"parameters": {
"type": "object",
"properties": {
"order_no": {"type": "string", "description": "訂單編號,格式 ORD 開頭加 10 位數字"},
"email": {"type": "string", "description": "會員信箱,與 order_no 至少要有一個"}
}
}
}參數描述比型別重要
{\"type\": \"string\"} 幾乎沒給模型任何資訊。寫上格式範例、單位、允許值,錯誤率會明顯下降。日期參數尤其要寫清楚是 YYYY-MM-DD 還是時間戳。
工具數量要控制
工具超過十來個之後,選錯的機率會快速上升。做法是分組:先讓模型選類別,再把該類別的工具展開。或者把相似工具合併成一個帶 action 參數的工具。
工具描述改動後要跑回歸測試。它的影響力等同於提示,卻常常被當成「只是註解」隨手改。