Smolagents AI 代理框架

 HuggingFace 的全新代理程式框架,以最小的工作量創造強大的 AI 代理程式

SmolAgents - 強大的 AI 代理,最少的程式碼,在 Hugging Face 框架上 | Product Hunt

Deep Research build By Smolagents FREE

Powered By Smolagents

Ai 代碼 Smolagents | FAST&FREE

由 Together AI 和 LlamaCoder 提供技術支援

smolagents and tools gallery

best smolagents in huggingface

 什麼是代理商?

AI 代理是 LLM 輸出控制工作流程的程式.

本表說明代理權在不同系統中的差異:

機構層級說明如何稱為範例樣式
☆☆☆LLM 輸出對程式流程沒有影響簡易處理器process_llm_output(llm_response)
★☆☆LLM 輸出決定基本控制流程路由器if llm_decision(): path_a() else: path_b()
★★☆LLM 輸出決定函式的執行工具呼叫run_function(llm_chosen_tool, llm_chosen_args)
★★★LLM 輸出控制迭代和程式延續多步驟代理while llm_should_continue(): execute_next_step()
★★★一個代理工作流程可以啟動另一個代理工作流程多重代理if llm_trigger(): execute_agent()

SmolAgents 的特點

🤗 Smolagents 是 Hugging Face 團隊開發的簡約型 AI 代理框架,讓開發人員只需幾行程式碼即可部署強大的代理。smolagents 擁有簡單與高效的特性,可讓大型語言模型 (LLM) 與現實世界進行無縫互動。

✨ 簡單

緊湊型程式碼庫:擁有約 1,000 行的核心程式碼。 代理商.py因此,smolagents 將抽象概念減至最少,以便進行直接開發。

使用者友善

開發人員可以快速定義代理程式、提供必要的工具,並立即執行它們,而無需複雜的設定。

代碼代理

 smolagents 著重於 代碼代理,代理會寫入並執行 Python 程式碼片段來執行動作,而不是將動作產生為 JSON 或文字 Blob。

高效率

與標準的工具呼叫方法相比,代碼代理提供了更高的效率和精確度,減少了約 30% 的步驟和 LLM 呼叫,並在複雜的基準上實現了優異的性能。

安全執行

 為了確保程式碼的安全執行,smolagents 支援在沙箱環境中執行程式碼,例如 E2B,提供受保護且隔離的執行空間。

各種法學碩士

 smolagents 可以毫不費力地與任何大型語言模型整合,包括透過 Transformers 託管在 Hugging Face Hub 上的模型,以及透過 LiteLLM 整合 OpenAI、Anthropic 及其他公司的模型。

SmolAgents :與 Hugging Face Hub 整合

分享與載入工具:與 Hugging Face Hub 深度整合,讓開發人員可以輕鬆分享和匯入工具,促進社群內的合作與分享。

生態系統成長:利用 Hub 的功能,smolagents 不斷擴充更多功能和工具,提供無限的發展潛力。

支援傳統工具呼叫代理

多樣化的選擇:除代碼代理外,smolagents 還支援傳統的 工具呼叫代理,其中的動作會寫成 JSON 或文字區塊,適合特定的場景和需求。

選擇代碼 smolAgents 的原因

優異的組合性:程式碼自然地支援函數嵌套與重複使用,允許表達複雜的邏輯。

高效的物件處理:與 JSON 相比,代碼簡化了物件的管理和傳輸。

極致彈性:代碼可以代表電腦可以執行的任何操作,提供了極大的多樣性。

廣泛的訓練資料:LLM 接受過大量高品質程式碼的訓練,增強了他們產生和理解程式碼的能力。

效能優勢 的 smolagents

在各種基準測試中,利用開放原始碼模型的 smolagent 與使用專屬模型的代理系統效能不相伯仲。由於代碼代理程式的效率以及開放原始碼模型的持續進步,開發人員可以建立功能強大的代理程式系統,而無須仰賴封閉原始碼的服務。

SmolAgents 應用範例

在 Smolagents 中,代理被封裝在允許它們執行特定任務的類別中。例如,一個 ManagedAgent 您可以利用不同的代理類型來管理各種任務。以下是一個簡化的範例,說明如何實作兩個代理程式,一個用於網路搜尋,另一個用於產生圖片,以下是如何製作自訂工具,從 Google 地圖取得旅行時間,以及如何將它用於旅行計畫代理程式:

from typing import Optional
from smolagents import CodeAgent, HfApiModel, tool

@tool
def get_travel_duration(start_location: str, destination_location: str, transportation_mode: Optional[str] = None) -> str:
    """Gets the travel time between two places.

    Args:
        start_location: the place from which you start your ride
        destination_location: the place of arrival
        transportation_mode: The transportation mode, in 'driving', 'walking', 'bicycling', or 'transit'. Defaults to 'driving'.
    """
    import os   # All imports are placed within the function, to allow for sharing to Hub.
    import googlemaps
    from datetime import datetime

    gmaps = googlemaps.Client(os.getenv("GMAPS_API_KEY"))

    if transportation_mode is None:
        transportation_mode = "driving"
    try:
        directions_result = gmaps.directions(
            start_location,
            destination_location,
            mode=transportation_mode,
            departure_time=datetime(2025, 6, 6, 11, 0), # At 11, date far in the future
        )
        if len(directions_result) == 0:
            return "No way found between these places with the required transportation mode."
        return directions_result[0]["legs"][0]["duration"]["text"]
    except Exception as e:
        print(e)
        return e

agent = CodeAgent(tools=[get_travel_duration], model=HfApiModel(), additional_authorized_imports=["datetime"])

agent.run("Can you give me a nice one-day trip around Paris with a few locations and the times? Could be in the city or outside, but should fit in one day. I'm travelling only with a rented bicycle.")

經過收集旅行時間和運算的幾個步驟後,代理返回了這個最終建議:巴黎單車一日遊行程:


1.早上 9:00 從艾菲爾鐵塔開始。
2.在艾菲爾鐵塔觀光至上午 10:30。
3.上午 10:46 前往 Notre-Dame Cathedral。
4.在 Notre-Dame 大教堂觀光至中午 12:16。
5.中午 12:41 前往 Montmartre。
6.在 Montmartre 觀光至下午 2:11。
7.下午 2:33 前往盧森堡花園。
8.在盧森堡花園觀光至下午 4:03。
9.下午 4:12 前往羅浮宮博物館。
10.羅浮宮博物館觀光至下午 5:42。
11.午休至下午 6:12。
12.計劃結束時間:下午 6:12。

建立工具後,將它分享到 Hub 就這麼簡單:

get_travel_duration.push_to_hub("{your_username}/get-travel-duration-tool")

SmolAgents 的資源

有關 smolagent 的常見問題

smolagents 是 Hugging Face 團隊開發的簡約型 AI 代理程式庫。它允許開發人員以最少的程式碼建立並執行強大的 AI 代理。smolagents 著重於簡單與效率,可讓大型語言模型 (LLM) 與真實世界的任務進行無縫互動。

不像許多 AI 代理框架有複雜的抽象與配置,smolagents 維護約 1,000 行的精簡代碼庫。它強調易用性並支援程式碼代理,代理可直接執行 Python 程式碼片段,以提高效率並減少所需步驟和 LLM 呼叫的數量。

 程式碼代理是 smolagents 的主要特色。代碼代理不是以 JSON 或文字 Blob 來產生動作,而是編寫和執行 Python 代碼片段來執行任務。此方法利用 LLM 生成和理解程式碼的能力,在表達複雜邏輯時提供更好的可合成性和靈活性。

您可以使用 pip 指令安裝 smolagents:

複製pip install smolagents

要開始使用,請透過匯入必要的類別來定義一個代理,提供所需的工具和 LLM 模型,並執行您的任務。舉例來說

python 复制from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())
agent.run("Your task here")

 smolagents 的設計可與 LLM 廣泛相容。它可透過 Transformers 與 Hugging Face Hub 上託管的模型無縫整合,也可透過 LiteLLM 整合與 OpenAI、Anthropic 及其他公司的模型無縫整合。這種靈活性可讓您選擇最適合您專案需求的 LLM。

 是的,除了程式碼代理之外,smolagents 還支援傳統的工具呼叫代理。在此模式下,動作會寫成 JSON 或文字 blob,適用於執行程式碼片段可能不太理想的特定場景。

 smolagents 透過支援沙箱環境,優先確保程式碼執行的安全性。舉例來說,它可以利用 E2B (Execution to Binary),為執行程式碼片段提供安全且隔離的環境。這可確保程式碼的執行不會危害主機系統的安全性。

 代碼代理提供多種好處:

  • 更好的可合成性: 程式碼自然允許函數嵌套和重複使用,讓複雜的邏輯表達更容易。
  • 高效的物件管理: 相較於 JSON,在程式碼中管理和傳遞物件更為直接。
  • 高彈性: 代碼可以代表任何計算操作,提供極大的多樣性。
  • 豐富的訓練資料利用率: 由於 LLM 接受過大量程式碼的訓練,因此精通於產生和理解程式碼片段。

 smolagents 與 Hugging Face Hub 深度整合,讓開發人員可以輕鬆分享和載入工具。這有助於建立一個合作的生態系統,讓社群可以貢獻和存取工具與資源,進而強化 smolagents 的功能和覆蓋範圍。

您可以探索下列資源,瞭解更多關於 smolagents 的資訊:

  • 官方文件: 訪問 smolagents 上的說明文件 抱抱臉網站。
  • 入門指南: 查看 Hugging Face 團隊提供的入門指南和教學。
  • 範例專案: 探索 GitHub 上的範例專案和程式碼範例,看看 smolagents 的實際應用。
  • 社區論壇: 透過論壇和討論與開發人員社群接觸,以獲得洞察力和支援。

Choose from Your languange