smolagents:用代码思考的AI Agent框架

Hugging Face 出品的 smolagents 最近在 GitHub 上拿了将近 2.8 万 Star,增长很快。这个库做的事情用一句话概括:让你用几十行代码跑起一个能写代码、调工具、自主完成任务的 AI Agent。

正文顶部截图

为什么是"写代码"而不是"调接口"

现在市面上的 Agent 框架很多,大部分思路是让大模型输出一段 JSON,描述要调用哪个工具、传什么参数。smolagents 走了另一条路:直接让模型写 Python 代码来完成动作。

这个区别听起来小,实际影响很大。根据他们的论文数据,代码方式比 JSON 方式平均少用 30% 的步骤,在高难度基准测试上表现也更好。原因不难理解:代码本身就能表达循环、条件判断、变量复用,一次动作可以覆盖多步逻辑,不用每次都让模型重新规划。

举个例子,模型要搜索三个话题然后汇总结果,JSON 方式需要三轮工具调用,代码方式一次循环就搞定了。

极简设计,不到一千行核心代码

smolagents 的核心逻辑全部塞在 agents.py 这一个文件里,总共不到一千行。作者刻意把抽象层压到最低,没有搞出一大堆中间概念。

对使用者来说这意味着两件事:一是容易理解,翻一下源码就能搞清楚整个运行机制;二是容易改,觉得哪里不顺手直接改源码就行,不用跟一堆抽象层搏斗。

库本身提供了两种 Agent 类型:CodeAgent 让模型写代码,ToolCallingAgent 走传统的 JSON 工具调用路线。两种都能用,按场景选。

模型随便换,不绑定任何厂商

smolagents 支持几乎所有主流 LLM 接入方式。Hugging Face 自家的 Inference Client、OpenAI、Anthropic、本地 transformers 模型、Ollama、Azure、Amazon Bedrock,全部支持。甚至还有 LiteLLM 集成,一个接口覆盖上百种模型。

实际用起来就是换个模型名的事。上面那段代码把 InferenceClientModel 换成 LiteLLMModel,其他一行不用动。

工具生态开箱即用

Web 搜索、MCP Server 工具、LangChain 工具、Hugging Face Hub 上的 Space,都可以直接当工具挂到 Agent 上。写好之后还能一键推送到 Hub,别人直接拉下来就能用。

Agent 也支持多模态输入,文字、图片、视频、音频都能处理。做视觉相关的 Agent 不用额外折腾。

安全问题不能忽视

代码执行天然有安全风险。smolagents 提供了几种沙箱方案:E2B、Blaxel、Modal 是云托管方案,Docker 是自建方案。官方明确说了,自带的 LocalPythonExecutor 不是安全边界,跑不可信代码的时候必须用沙箱。

README区域截图

CLI 也能直接跑

除了在 Python 代码里调用,smolagents 还提供了两个命令行工具:smolagent 跑通用多步任务,webagent 专门做网页浏览。不写代码也能用,命令行里指定模型和工具就行。

值不值得试

如果你在做 AI Agent 相关的项目,smolagents 值得认真看看。核心卖点就三个:代码执行效率高、设计极简容易改、模型工具不锁定。跟同类框架比,它在"简单够用"和"功能完整"之间找到了一个不错的位置。

容易改、模型工具不锁定。跟同类框架比,它在"简单够用"和"功能完整"之间找到了一个不错的位置。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐