Building Effective AI Agents: Anthropic's Guide to Agentic Systems

Anthropic 建議使用簡單、可組合的模式來構建 AI agent,而不是複雜的框架,因為最成功的實作會針對特定任務優先考慮適當的複雜度。其核心哲學是從最簡單的解決方案開始——通常是單次 LLM 調用——並且只有在能明顯改善結果時才增加複雜度。

Distinguishing Workflows from Agents

Anthropic 將所有 LLM 驅動的系統歸類為 "agentic systems",但對 workflow 與 agent 進行了關鍵的架構區分:

  • Workflows: 系統透過預定義的程式碼路徑來編排 LLM 與工具。這些系統為定義明確的任務提供可預測性與一致性。
  • Agents: 系統中 LLM 動態地引導其自身的流程與工具使用,並對如何完成任務保持控制權。這些系統最適合處理無法透過硬編碼(hardcoded)來解決的開放式問題。

The Building Blocks of Agentic Systems

每個 agentic system 都始於augmented LLM,即透過檢索(retrieval)、工具與記憶力增強的 LLM。Anthropic 建議使用 Model Context Protocol (MCP) 透過簡單的 client 實作來整合第三方工具。

Compositional Workflows

當任務可以分解為可預測的步驟時,workflows 提供了一種可靠的替代方案,而非完全的自主性:

  • Prompt Chaining: 將任務分解為一系列步驟,其中每個 LLM 調用都會處理前一個輸出。這對於生成行銷文案並接著進行翻譯等任務非常理想。
  • Routing: 對輸入進行分類,以將其導向至專業化的後續任務。這允許實現關注點分離,例如將客戶服務查詢導向至不同的專業化 prompt,或將簡單問題導向至較小的模型(例如 Claude Haiku 4.5)並將困難問題導向至能力更強的模型(例如 Claude Sonnet 4.5)。
  • Parallelization: 同時運行多個 LLM 調用。這包括Sectioning(將任務分解為獨立的子任務,例如在回覆中並行運行 guardrail check)與Voting(多次運行相同的任務以獲得多樣化的輸出,從而獲得更高的信心值)。
  • Orchestrator-Workers: 一個中央 LLM 動態地分解任務並將其委派給 worker LLMs。這用於處理子任務不可預測的複雜任務,例如對程式碼專案中的多個檔案進行修改。
  • Evaluator-Optimizer: 一個迴圈,其中一個 LLM 生成回覆,而另一個提供回饋以進行迭代式精煉。這對於文學翻譯或需要多輪分析的複雜搜尋任務非常有效。

Autonomous Agents

Agents 用於處理 LLM 必須獨立規劃與運作的開放式問題。它們依賴於基於環境回饋(ground truth)的工具使用迴圈來評估進度。

Key Characteristics of Agents:

  • Dynamic Planning: Agents 決定其完成任務的路徑。
  • Human-in-the-Loop: Agents 在檢查點或遇到阻礙時可以暫停以尋求人類回饋。
  • Stopping Conditions: 為了維持控制權,agents 通常會包含最大迭代次數限制。

Anthropic 引用其用於 SWE-bench 任務的 coding agent 與其 "computer use" 參考實作作為自主 agents 的主要範例。

Best Practices for Implementation

Frameworks vs. Direct API Use

雖然 Claude Agent SDK、AWS Strands、Rivet 與 Vellum 等框架簡化了底層任務,但 Anthropic 警告說,它們可能會建立抽象層,從而遮蔽了 prompt 與回覆,使得除錯(debugging)變得更加困難。他們建議從直接使用 LLM APIs 直接開始,以保持透明度。

Designing the Agent-Computer Interface (ACI)

Effective agents 需要高品質的工具文件說明書(tool documentation)與設計。Anthropic 建議將工具定義視為與 prompt engineering 同樣嚴謹的處理方式:

  • Avoid Formatting Overhead: 使用模型在網路上自然地看過的格式。避免要求模型進行複雜的計算(例如 diffs 的行數計算)或過度的字串轉義(string-escaping,例如用於程式碼的 JSON)。
  • Poka-yoke (Error-Proofing): 設計工具參數以降低犯錯的可能性。例如,Anthropic 改進了其 SWE-bench agent,透過要求使用絕對路徑而非相對路徑,消除了常見的失敗點。
  • Clear Documentation: 在工具定義中提供使用範例、邊緣案例(edge cases)與輸入格式要求。

Practical Applications

Anthropic 識別出 agentic systems 的兩個高價值領域:

  1. Customer Support: 結合對話式介面與工具來提取客戶數據並執行動作(例如,核發退款),其成功與否由使用者定義的解決方案來衡量。
  2. Coding Agents: 非常有效,因為程式碼解決方案可以透過自動化測試來驗證,允許 agents 根據客觀回饋來迭代。

Core Principles for Success

為了構建可靠且可維護的 agents,Anthropic 強調了三個原則:

  1. Simplicity: 維持簡單的設計並避免不必要的複雜度。
  2. Transparency: 明確地展示 agent 的規劃步驟。
  3. ACI Optimization: 仔細地設計工具文件說明書與測試,以確保模型可以完美地使用工具。

Sources

相關