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 的主要功能
smolagents 是 transformers.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」,驗證了以可執行程式碼作為主要動作格式的方法。