Published on

Anthropic 智能體開發:簡潔勝於複雜

Authors
  • avatar
    Name
    Ajax
    Twitter

智能體的定義

智能體的概念多樣,有人認為是能夠獨立思考、自主決策並運用工具完成複雜任務的「全能管家」,另一些人則認為是按部就班執行預設工作流程的「規矩員工」。Anthropic 將這兩者統稱為智能系統,並區分了工作流和智能體:

  • 工作流: 通過預定代碼路徑編排大型語言模型(LLM)和工具的系統。
  • 智能體: 由 LLM 動態指導自身流程和工具使用的系統,可自主控制任務完成方式。

何時選用智能體

Anthropic 建議在開發 AI 應用時,應遵循「能簡單就不要複雜」的原則。並非所有場景都需要構建複雜的智能系統。智能系統功能強大,但可能導致響應變慢和成本增加。開發者需要在功能與效率之間權衡。

  • 工作流: 適合需要可預測性和一致性的明確任務。
  • 智能體: 更適合需要靈活性和模型驅動決策的大規模場景。

對於許多應用,使用好的提示詞配合檢索和上下文示例,直接向大模型提問通常已足夠。

框架的使用

目前,市面上存在多種幫助開發者構建 AI 智能體的框架,例如:

  • LangChain 的 LangGraph
  • 亞馬遜 Bedrock 的 AI Agent 框架
  • 拖放式大模型工作流構建工具 Rivet
  • 用於構建和測試複雜工作流的 GUI 工具 Vellum

這些框架簡化了開發流程,但也會增加代碼的抽象層,使底層邏輯不夠透明,增加調試難度,並可能導致在簡單場景中引入過度複雜的解決方案。

Anthropic 建議開發者從直接使用大模型的 API 開始。許多模式僅需幾行代碼即可實現。如果選擇使用框架,務必理解其底層原理。對框架底層機制理解不足是導致開發問題的主要原因。Anthropic 的 cookbook 提供了具體示例。

建構模塊、工作流和智能體

基礎建構模塊:增強版 LLM

智能系統的基本建構模塊是增強的 LLM,具備檢索和記憶等功能。Anthropic 的模型可以主動使用這些能力,例如生成搜索查詢、選擇工具和決定保留的信息。

在擴展功能時,應重點關注:

  • 根據具體應用場景定制功能
  • 確保為模型提供簡單且文檔完備的接口

Anthropic 最近發布的模型上下文協議簡化了 AI 模型與第三方工具生態系統的集成。

工作流:提示鏈

提示鏈將複雜任務分解為多個步驟,每個步驟調用一次大模型,後續步驟基於前一步的結果進行處理。開發者可在中間環節加入檢查點,確保流程按預期推進。

提示鏈適合將複雜任務清晰分解為一系列固定子任務的場景。每個模型專注於完成一個簡單任務,雖然整體響應時間可能稍長,但準確率會顯著提高。

典型應用案例:

  • 先生成營銷文案,再將其翻譯成其他語言。
  • 先寫文檔大綱並進行合規性檢查,再基於大綱撰寫完整文檔。

工作流:智能分流

分流技術判斷輸入任務類型,並將其分配給相應的模塊。這種設計讓每個模塊針對特定任務進行優化,避免不同任務類型之間的相互干擾。智能分流適用於任務有明顯分類特徵的場景。AI 系統可以通過大語言模型或傳統算法,準確識別任務類型並進行分流。

典型應用案例:

  • 客服系統中,將一般諮詢、退款申請和技術支持等問題分別引導到相應流程。
  • 將簡單常見問題分配給較小模型,將困難罕見問題分配給更強大的模型,以優化成本和速度。

工作流:並行

大語言模型可以同時處理任務,並以編程方式聚合輸出。並行工作流的特點:

  • 任務分段: 將任務拆分為可並行運行的子任務,最後整合結果。
  • 投票機制: 對同一任務進行多次運行,選擇最優結果或綜合多個答案。

當子任務可以並行執行以提高速度,或需要多角度嘗試以獲得更高置信度的結果時,並行方法非常有效。對於複雜任務,讓每次調用專注於處理特定方面,會獲得更好的效果。

典型應用案例:

  • 任務分段:
    • 安全防護:一個模型處理用戶請求,另一個進行內容審核。
    • 性能評估:不同模型評估系統性能指標。
  • 投票機制:
    • 代碼安全檢查:多個檢測模型共同發現代碼漏洞。
    • 內容審核:多個模型從不同角度評估內容安全性。

工作流:領導 — 執行者

中央大語言模型動態分解任務,分配給執行者模型,並彙總結果。

這種工作流適用於難以提前確定具體步驟的複雜任務。任務拆分不是固定的,而是由 AI 系統根據情況動態決定。

典型應用案例:

  • 需要對多個文件進行複雜修改的編程應用。
  • 需要從多個來源收集和分析相關信息的搜索任務。

工作流:評估 — 優化

一個 LLM 調用生成響應,另一個提供評估和反饋,形成循環。

當存在明確評估標準,且通過迭代細化可以帶來顯著價值時,此工作流特別有效。LLM 能夠提供反饋,類似於人類作家反覆修改的過程。

典型應用案例:

  • 文學翻譯:評估模型發現翻譯遺漏的語言差異並提供修改建議。
  • 複雜搜索:評估模型判斷是否需要繼續深入搜索。

智能體

智能體隨著 LLM 在理解複雜輸入、推理規劃、工具使用和錯誤恢復等關鍵能力上的成熟而出現。

智能體的工作始於人類用戶的命令或互動討論。一旦任務明確,智能體會獨立規劃和操作,可能需要向人類索取更多信息或讓人類做判斷。

執行過程中的每一步,從環境中獲得「真實情況」至關重要。智能體可以在檢查點或遇到阻塞時暫停以獲取人類反饋。任務通常在完成後終止,但也通常包含停止條件。

智能體能夠處理複雜任務,但其實現通常很簡單,通常只是循環中根據環境反饋來使用工具的大型語言模型。因此,設計工具集及其文檔清晰、周到至關重要。

智能體適用於開放性問題,此類問題難以預測所需步驟數量,並且不能硬編碼固定路徑。智能體的自主性使其成為在受信任環境中擴展任務的理想選擇。智能體的自主性意味著成本更高,並且可能存在錯誤累積的風險。建議在沙盒環境中進行廣泛測試,並設置適當的防護措施。

智能體的應用示例:

  • 一個代碼智能體,用於解決涉及根據任務描述編輯多個文件的 SWE-bench 任務。
  • Anthropic 的「Computer use」功能,其中 Claude 使用計算機完成任務。

組合與定制

這些建構模塊並非規定性,開發者可以根據用例進行塑造和組合。成功的關鍵在於衡量性能並迭代實現。只有當更簡單的解決方案無法實現時,才應考慮增加複雜性。在 LLM 領域取得成功不在於構建最複雜的系統,而在於構建適合需求的系統。從簡單的提示開始,用全面的評估優化它們,只有當更簡單的解決方案無法實現時才添加多步驟智能體系統。

在部署智能體時,需要遵循以下原則:

  • 保持智能體設計的簡單性。
  • 優先確保智能體的透明度,清楚展示計劃中的每一步。
  • 通過全面的工具文檔和測試,精心打造智能體-計算機介面(ACI)。