HuggingFace smolagents:迄今为止最好的多代理框架?
- Rifx.Online
- Programming , Machine Learning , Chatbots
- 14 Jan, 2025
比较 Autogen、Langraph、CrewAI、Magentic-One 等
正如你在多个地方所读到的,2025 年是 AI Agents 的年份。马克·扎克伯格甚至公开表示,Meta 将会有中高级工程师担任 AI Agents。
从过去几次发布中可以清楚看出,微软现在拥有 3 个多智能体编排框架(AutoGen、Magentic-One、Tiny-Troupe),OpenAI 发布了 Swarm,AWS 启动了多智能体编排器,此外还有独立的 Langraph 和 CrewAI。现在连 HuggingFace 也加入了这个行列,推出了“smolagents”,这又是一个多智能体框架,但有所不同。
什么是 smolagents?
Smolagents 是 Hugging Face 新推出的代理框架,旨在简化利用大型语言模型(LLMs)创建智能代理的过程。这个轻量级库使开发者能够用最少的代码构建代理,专注于实用性和易用性。
Smolagents 的主要特点
简单性:Smolagents 允许通过简单的编码方法快速原型设计和部署,即使是经验有限的用户也能轻松上手。
以代码为中心的代理:该框架支持直接作为 Python 代码执行操作的代理。这种方法通常比传统的基于工具的代理更具准确性和效率,因为后者可能需要更多的步骤。
LLM 兼容性:Smolagents 设计为 LLM 无关,这意味着它可以与 Hugging Face Hub 上的任何 LLM 无缝集成,以及通过其 LiteLLM 集成与其他流行模型兼容。
代理能力:该框架允许 LLM 通过编写可以通过外部工具执行的操作来控制工作流程。这种灵活性增强了代理处理不符合预定义工作流程的复杂任务的能力。
安全特性:Smolagents 包含在安全的沙盒环境中执行代码的机制,确保在运行潜在风险代码时的安全操作。
更多关于代码中心代理
这就是 smolagents 与其他所有框架的独特之处。但让我们首先了解其他框架中代码代理的工作原理。
其他代理框架中的代码代理:
在大多数其他框架中,代理通过 使用类似 JSON 的格式调用工具 来执行任务。其通常的工作方式如下:
- 动作表示: 代理将动作写成结构化的 JSON。每个动作包括:
工具名称:要使用的工具(例如,“搜索”,“翻译”)。
参数:工具所需的参数(例如,“查询”: “当前天气”)。
执行过程:
框架读取这个 JSON,确定使用哪个工具,并使用给定的参数运行该工具。
一旦工具返回结果,代理处理结果并决定下一个动作。
Smolagents 的不同之处
Smolagents 允许代理 编写实际的 Python 代码 来执行操作,而不是使用 JSON。以下是这点不同和更好的原因:
代码作为操作:在 Smolagents 中,代理直接生成 Python 代码来执行操作。
直接执行:该框架直接运行这些代码,无需将 JSON 转换为工具调用。这使得执行更快、更简单且更准确。
示例:
假设您将此命令传递给代理框架
生成日落图像并显示
在其他框架中,这将是一个更复杂的流程,因为这两个操作需要分别进行
其他框架(通常)
步骤 1:生成图像
代理发送一个 JSON 请求以生成图像:
{
"tool": "generate_image",
"args": { "prompt": "sunset over mountains" }
}
步骤 2:显示图像
图像生成后,代理发送另一个 JSON 动作以显示它:
{
"tool": "display_image",
"args": { "image": "generated_image.png" }
}
每个步骤都涉及解析 JSON,确定要调用的工具,并执行它。代理无法轻松地将这些动作串联在一起或重用结果。
使用 smolagents 时,
它将简单地编写代码以一起执行所有内容
image = generate_image("sunset over mountains")
display(image)
因此无需多次调用,复杂性降低
为什么 Smolagents 更优秀
更少的开销:无需将 JSON 转换为工具调用——只需运行代码。
更大的灵活性:Python 代码可以处理复杂任务(循环、条件、自定义函数),而 JSON 不能。
与 LLM 训练的更好对齐:由于 LLM 在 Python 代码上进行了大量训练,因此在生成代码中的动作时,它们的表现优于 JSON。
简化的执行:代理可以一次性直接处理任务,无需额外步骤来解释 JSON。
兼容任何本地 LLM 和 API
smolagents 的缺点
尽管这个框架很棒,但在使用之前有一些风险需要了解
代码执行有缺陷:即使 Smolagents 包含安全本地解释器和 E2B 远程执行等保护措施,仍然可能出现框架运行诸如“删除所有内容”的代码片段,使您的电脑出现故障的情况。
看起来没有 LangGraph 灵活。
您的 LLM 应该擅长编码!!我尝试了一些非编码 LLM,结果并不理想。
为所有事情编写代码真的必要吗?一点也不。Smolagents 可能会引入不必要的复杂性。
那么,它是最好的框架吗?我不这样认为,但如果您刚开始接触代理框架,它是一个相当不错的选择。而且它很简单!!
如何使用 smolagents?
直接从仓库中举个例子
- 安装包
pip install smolagents
2. 创建你的 CodeAgent 并为其传递一些工具
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())
agent.run("一只豹子以全速穿过艺术桥需要多少秒?")
如你所见,CodeAgent 是一个独立的代理,可以使用任何类型的工具(在这种情况下是互联网搜索)。对于给定的提示,CodeAgent 将编写代码以:
在互联网上搜索以找出回答问题所需的不同信息
以这样的方式编写代码,使最终输出为所需的“秒”,因此为你的任何问题定制的代码!!
结论,
这个框架看起来很有趣,绝对值得一试。下面是访问它的 git 仓库。