為 AI Agent 編寫高效工具:Anthropic 工程指南

Anthropic 推出了一套完整的開發方法論,用於構建與優化 AI Agent 的工具,將軟體開發範式從確定性合約(系統對系統)轉向非確定性合約(Agent 對系統)。核心觀點在於,工具的設計必須專門針對 LLM 的「可負擔性」(affordances)進行優化——優先考慮上下文效率與語義清晰度,而非傳統 API 的靈活性。

以 Agent 為中心的工具開發範式

傳統軟體是建立在確定性合約之上的,即特定的輸入總是會產生相同的輸出。相比之下,AI Agent 是非確定性的;面對相同的提示詞,它們可能會選擇呼叫工具、依賴內部知識,或要求進一步說明。

為了最大化 Agent 的效能,開發者必須不再將工具視為標準 API 來撰寫,而是要設計能增加 Agent 成功執行策略之「表面積」(surface area)的工具。對 Agent 而言具備良好人機工程學(ergonomic)的工具,通常與直覺的人類工作流程一致。

工具開發的系統化工作流程

Anthropic 建議透過原型設計、評估與 Agent 引導的優化之迭代循環,來精煉工具效能。

1. 原型設計與本地測試

開發者應從快速原型開始,利用 Claude Code 等工具來生成初步實作。為了提高一次性生成的品質,Anthropic 建議為相關的 SDK 或 API 提供對 LLM 友善的文件(例如 llms.txt 檔案)。工具可以透過以下方式進行本地測試:

  • Local MCP Servers: 使用 claude mcp add 連接到 Claude Code。
  • Desktop Extensions (DXT): 整合至 Claude Desktop 應用程式。
  • Direct API Calls: 使用 Anthropic API 進行程式化測試。

2. 評估驅動的優化

需要進行系統化的衡量,以避免過度擬合(overfitting)並確保在現實世界中的有效性。這包括:

  • 生成複雜任務: 避免使用簡單的「沙盒」提示詞,轉而使用多步驟、現實世界的場景(例如:透過分析日誌並識別受影響的使用者來解決客戶帳單爭議)。
  • 可驗證的結果: 將提示詞與標準答案(ground-truth)配對,或使用基於 LLM 的裁判(judge)進行驗證。
  • 程式化執行:while-loops 中執行評估 Agent,使其在 LLM API 呼叫與工具執行之間交替進行。
  • 交錯式思考: 在工具呼叫之前利用「交錯式思考」(interleaved thinking)或思維鏈(Chain-of-Thought, CoT)區塊,以診斷為何 Agent 未能使用工具或選擇了低效的路徑。

3. Agent 引導的精煉

Anthropic 發現,Agent 在分析自身的失敗紀錄時非常有效。透過將評估紀錄回饋給 Claude Code,開發者可以自動重構工具的實作與描述,以確保自我一致性與效能。

高效能工具的核心原則

策略性工具選擇

工具並非越多越好。與傳統軟體豐富的記憶體相比,Agent 的上下文視窗(context windows)是有限的。

  • 避免暴力型工具: 與其使用會回傳所有資料的 list_contacts 工具(這會迫使 Agent 逐個 token 閱讀),不如實作一個 search_contacts 工具。
  • 整合功能: 將多個離散的 API 呼叫整合為單一的高階工具。例如,與其使用分開的 list_userscreate_event 工具,不如建立一個 schedule_event 工具,在單次呼叫中處理可用性與排程。

命名空間與邊界定義

為了防止 Agent 在存取多個 MCP server 上的數百個工具時產生混淆,開發者應使用命名空間(將相關工具歸類在共同的前綴之下)。

  • 範例: 使用 asana_projects_searchjira_projects_search 有助於 Agent 劃分不同服務之間的邊界。

優化上下文與訊號

工具的回傳結果應優先考慮高訊號資訊,並將 token 浪費降至最低。

  • Semantic Identifiers (語義識別碼): 使用自然語言名稱或從 0 開始的 ID 來取代晦澀難懂的 UUID,以減少幻覺。
  • Response Formats (回傳格式): 實作一個 response_format 列舉(例如:CONCISE 對比 DETAILED)。簡潔的回傳能節省 token,而詳細的回傳則提供下游工具呼叫所需的 ID。
  • Token 效率: 使用分頁、範圍選擇與截斷來管理上下文。Anthropic 將 Claude Code 的工具回傳結果預設為 25,000 tokens。

工具規格的提示工程

工具描述在 Agent 的上下文中扮演著引導機制。Anthropic 指出,對工具描述進行精確的精煉,對於 Claude Sonnet 3.5 在 SWE-bench Verified 評估中達到頂尖效能至關重要。

  • 明確的上下文: 描述工具時,就像在向新進員工解釋一樣,包含特定領域的術語與專業的查詢格式。
  • 無歧義的命名: 使用特定的參數名稱(例如:使用 user_id 而非 user)以強制執行嚴格的資料模型。

Sources

相關