smolagents:Hugging Face 开源的Agent框架,用代码驱动 Agent 的新思路 精华

发布于 2025-1-10 13:38
浏览
0收藏

近日,Hugging Face 最近开源的一个Agent项目:smolagents。相较于其它框架,它的理念和实现都比较简单。基于python开发,核心设计理念是 “少即是多”。相比市面上动辄几万行代码的 Agent 框架,它保持了极简的风格,核心代码仅有数千行,但功能却毫不逊色。Hugging Face 团队希望通过这种方式,降低 Agent 开发的门槛,让更多开发者能够快速上手。

smolagents:Hugging Face 开源的Agent框架,用代码驱动 Agent 的新思路-AI.x社区

设计亮点

smolagents:Hugging Face 开源的Agent框架,用代码驱动 Agent 的新思路-AI.x社区

smolagents 的最大亮点在于其对“代码 Agent” 的原生支持。这意味着 Agent 的行为将直接通过 Python 代码来表达,而非传统的 JSON 或者文本指令。这种设计思路有以下几点优势:

  • 执行效率更高:代码 Agent 可以减少 LLM 的调用次数,从而提高整体的执行效率。
  • 表达能力更强:代码本身就是一种清晰、简洁的表达方式,更适合描述复杂的 Agent 行为。
  • 复用性更好:代码的模块化设计,能够更好地复用和扩展 Agent 的功能。
  • 避免 JSON 的复杂性:省去了 JSON 结构定义、解析等环节,让 Agent 开发回归本质。

关键特性解读:

  • 极简架构:核心代码简洁,易于理解和定制,避免了不必要的框架抽象。
  • 安全沙箱:集成 E2B 等沙箱环境,确保代码执行的安全性,降低潜在的安全风险。
  • Hub 集成:无缝对接 Hugging Face Hub,方便工具和模型的共享与复用。
  • 模型兼容性:支持 Hugging Face Hub 上的开源模型,以及 OpenAI、Anthropic 等主流 LLM。

代码示例

smolagents 的上手门槛非常低,以下是一个简单的代码示例:

from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())

agent.run("How many seconds would it take for a leopard at full speed to run through Pont des Arts?")

可以看到,开发者只需要几行代码,就能创建一个可以执行网络搜索任务的 Agent。

更复杂的例子:

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

@tool
def get_travel_duration(start_location: str, destination_location: str, departure_time: Optional[int] = None) -> str:
    """Gets the travel time in car between two places.
    
    Args:
        start_location: the place from which you start your ride
        destination_location: the place of arrival
        departure_time: the departure time, provide only a `datetime.datetime` if you want to specify this
    """
    import googlemaps # All imports are placed within the function, to allow for sharing to Hub.
    import os

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

    if departure_time is None:
        from datetime import datetime
        departure_time = datetime(2025, 1, 6, 11, 0)

    directions_result = gmaps.directions(
        start_location,
        destination_location,
        mode="transit",
        departure_time=departure_time
    )
    return directions_result[0]["legs"][0]["duration"]["text"]

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 via public transportation.")

开源模型的潜力

smolagents 的实验结果表明,在一些复杂任务中,基于开源模型构建的代码 Agent,已经展现出了不俗的性能,甚至可以和一些闭源模型相媲美。这对开源 Agent 技术的发展无疑是一个利好。

smolagents:Hugging Face 开源的Agent框架,用代码驱动 Agent 的新思路-AI.x社区

总结

Hugging Face 向来对开发者用户理解深入,加上它社区的优势,它发布的很多框架都能够获得不错的反响,smolagents 是 Hugging Face 在 AI Agent 领域的一次尝试,上线没几天就已经4k的星标,建议大家也使用使用,一起交流使用心得和体验。

项目地址:https://github.com/huggingface/smolagents

本文转载自 AI工程化​,作者: ully

收藏
回复
举报
回复
相关推荐