Smolagents:以代码为中心
Smolagents 是 Hugging Face 新推出的代理框架,旨在简化利用大型语言模型 (LLM) 的智能代理的创建。

正如你一定在多个地方读到的那样,2025 年是AI代理的一年。以至于马克·扎克伯格公开表示 Meta 将让AI代理担任中高级工程师。
从过去的几个版本中可以清楚地看出,微软现在拥有 3 个多代理编排框架(AutoGen、Magentic-One、Tiny-Troupe),OpenAI 发布了 Swarm,AWS 除了独立的 Langraph 和 CrewAI 之外还推出了多代理编排器。现在,就连 HuggingFace 也加入了推出“smolagents”的行列,这又是一个多代理框架,但有所不同。
1、什么是 smolagents?
Smolagents 是 Hugging Face 新推出的代理框架,旨在简化利用大型语言模型 (LLM) 的智能代理的创建。这个轻量级库使开发人员能够用最少的代码构建代理,专注于实用性和易用性。
Smolagents 的主要功能:
- 简单性:Smolagents 允许使用简单的编码方法快速进行原型设计和部署,即使是那些在创建代理方面经验有限的人也可以使用它。
- 以代码为中心的代理:该框架支持直接以 Python 代码执行操作的代理。与传统的基于工具的代理相比,这种方法通常可以提高准确性和效率,而传统的基于工具的代理可能需要更多步骤。
- LLM 兼容性:Smolagents 的设计与 LLM 无关,这意味着它可以通过其 LiteLLM 集成与 Hugging Face Hub 上可用的任何 LLM 以及其他流行模型无缝集成。
- 代理功能:该框架允许 LLM 通过编写可通过外部工具执行的操作来控制工作流。这种灵活性增强了代理处理不适合预定义工作流的复杂任务的能力。
- 安全功能:Smolagents 包括在安全的沙盒环境中执行代码的机制,确保在运行潜在风险代码时安全运行。
2、以代码为中心的代理
这就是 smolagents 与其他所有框架不同的地方。但让我们首先了解代码代理在其他框架中的工作方式
2.1 其他 Agentic 框架中的代码代理
在大多数其他框架中,代理通过使用类似 JSON 的格式调用工具来执行任务。它通常的工作方式如下:
操作表示:
代理将操作写为结构化的 JSON。每个操作包括:
- 工具名称:要使用什么工具(例如,“搜索”、“翻译”)。
- 参数:工具所需的参数(例如,“查询”:“当前天气”)。
执行过程:
框架读取此 JSON,确定要使用哪个工具,并使用给定的参数运行该工具。
一旦工具返回结果,代理就会对其进行处理并决定下一步操作。
2.2 Smolagents 的不同之处
Smolagents 不使用 JSON,而是让代理编写实际的 Python 代码来执行操作。这就是为什么它与众不同且更胜一筹:
操作即代码:
在 Smolagents 中,代理直接生成 Python 代码来执行操作。
直接执行:
框架直接运行此代码,无需将 JSON 转换为工具调用。这使得执行更快、更简单、更准确。
3、示例
假设你将此命令传递给代理框架
Generate a sunset image and display
翻译:生成日落图像并显示
3.1 其他框架(通常)
在其他框架中,这将是一个更复杂的管道,因为需要分别执行两个操作:
步骤 1:生成图像
代理发送 JSON 请求以生成图像:
{
"tool": "generate_image",
"args": { "prompt": "sunset over mountains" }
}
步骤 2:显示图像
生成图像后,代理发送另一个 JSON 操作来显示它:
{
"tool": "display_image",
"args": { "image": "generated_image.png" }
}
每个步骤都涉及解析 JSON、找出要调用的工具并执行它。代理无法轻松地将这些操作链接在一起或重用结果。
3.2 使用 smolagents
它只需编写代码即可同时执行所有操作:
image = generate_image("sunset over mountains")
display(image)
因此无需多次调用,复杂性更低。
4、Smolagents 更好的原因
开销更少:无需将 JSON 转换为工具调用 - 只需运行代码即可。
灵活性更高:Python 代码可以处理 JSON 无法处理的复杂任务(循环、条件、自定义函数)。
与 LLM 训练更好地保持一致:由于 LLM 经过大量 Python 代码训练,因此在生成代码操作时比生成 JSON 操作时表现更好。
简化执行:代理可以一次性直接处理任务,无需额外步骤解释 JSON。
兼容任何本地 LLM 和 API
5、smolagents 缺点
虽然框架很棒,但在使用它之前必须了解一些危险
- 代码执行有缺陷:尽管 Smolagents 包括安全本地解释器和 E2B 远程执行等保护措施,但仍然可能存在框架运行“删除所有内容”代码片段的情况,导致您的 PC 出现故障。
- 看起来不像 LangGraph 那么灵活。
- 你的 LLM 应该擅长编码!!我尝试过几个非编码人员的 LLM,结果并不好
是否需要为所有事情编写代码?一点也不。Smolagents 可能会带来不必要的复杂性。
那么,它是最好的框架吗?我不这么认为,但如果你从 Agentic 框架开始,它是一个很好的框架。而且它很容易!!
6、如何使用 smolagents?
直接从 repo 中获取示例。
首先pip 安装包:
pip install smolagents
然后创建 CodeAgent 并向其传递一些工具:
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?")
如你所见,CodeAgent 是使用任何类型工具(在本例中为互联网搜索)的独立代理。对于给定的提示,CodeAgent 将编写代码以:
搜索互联网以找出回答问题所需的不同信息
以最终输出为“秒”的方式编写代码,因此你的任何问题都有完全定制的代码!!
原文链接:HuggingFace smolagents: The best Multi-Agent framework so far?
汇智网翻译整理,转载请标明出处
