Hugging Face smolagents 發布

Hugging Face 已推出 smolagents,一個簡單的庫,旨在釋放語言模型的代理能力。該庫的主要創新是推廣「Code Agents」——即編寫其動作為可執行程式碼的代理——與傳統的基於 JSON 的工具調用相比,提供了更優的組合性、物件管理和通用性。

AI 代理的光譜

在 AI 系統中,代理被定義為 LLM 輸出對程式工作流程的影響程度。這存在於一個連續的光譜上,而不是二元狀態:

  • Simple Processor: LLM 輸出對程式流程沒有影響。
  • Router: LLM 輸出決定基本的控制流程(例如,if/else)。
  • Tool Call: LLM 輸出決定執行哪個函式以及使用什麼參數。
  • Multi-step Agent: LLM 輸出透過迴路控制迭代和程式繼續。
  • Multi-Agent: 一個代理工作流程可以觸發另一個代理工作流程。

何時使用代理工作流程

當任務的工作流程無法預先確定時,代理系統最為有效。雖然確定性工作流程(硬編碼邏輯)更可靠,且應優先用於簡單、可預測的任務,但代理為複雜的真實世界請求提供了必要的彈性,這些請求取決於多個變數因素。

Code Agents 與 JSON 工具調用

傳統的代理框架常要求 LLMs 以 JSON 片段的形式輸出動作,然後解析並執行這些片段。smolagents 優先採用程式碼來撰寫動作,因為程式語言專門設計用來比 JSON 更有效率地表達電腦動作。

  • Composability: 程式碼允許巢狀動作以及可重複使用函式的定義。
  • Object Management: 程式碼提供了一種原生方式來儲存和操作先前動作的輸出。
  • Generality: 程式碼能表達電腦所能執行的任何操作。
  • Training Data Alignment: LLMs 已經在高品質程式碼上接受了大量訓練,使它們自然熟練於此格式。

smolagents 的主要功能

smolagentstransformers.agents 的後繼者,並以以下幾個核心目標為基礎建構:

  • Simplicity: 核心邏輯保持簡潔,僅需幾千行程式碼。
  • First-class Code Agent Support: 提供對編寫程式碼的代理的第一級支援,包括透過 E2B 在沙盒環境中安全執行。
  • Hub Integration: 工具可以共享至並從 Hugging Face Hub 載入。
  • Model Agnostic: 該庫支援透過 transformers 或 Inference API 託管在 Hub 上的模型,以及透過 LiteLLM 整合的 OpenAI 和 Anthropic 模型。

建構與部署代理

建立代理需要兩個主要組件:tools 的列表和 model(LLM 引擎)。

工具是透過定義帶有類型提示和文件字串的 Python 函式,然後套用 @tool 裝飾器來建立。這些工具接著可以推送至 Hugging Face Hub 以進行共享。例如,一個 CodeAgent 可以配備 Google Maps 工具,透過反覆收集旅行時間並執行計算來規劃複雜的旅遊行程。

開放模型的效能

基準測試顯示,開源模型現在可以在代理工作流程中與最佳的封閉模型競爭。具體來說,數據顯示「code agents」在各種挑戰中始終優於「tool calling agents」,驗證了以可執行程式碼作為主要動作格式的方法。

Sources