导语
玩 Agent 框架玩到最后,你会发现一个扎心的规律:框架越“重”,你离真正干活越远。配置文件三层嵌套,概念十几个,跑个 Demo 要先读半小时文档。HuggingFace 的 smolagents 反其道而行——整个 Agent 核心逻辑压缩在约一千行代码里,主打一句话:Agent 就该用代码思考,而不是用 JSON 套壳。
项目介绍:代码即行动的“小个子”
smolagents 是 HuggingFace 在 2024 年底推出的开源 Agent 库(Apache 2.0 协议),目前 GitHub 已收获约 2.9 万星。它最大的招牌是 CodeAgent:别的框架让模型输出 JSON 格式的工具调用,它直接让模型写 Python 代码——查数据、调工具、做计算全写进一段代码里,天然支持循环、条件、函数嵌套,组合能力比 JSON 强一个身位。
当然它也没把路堵死:偏好传统范式的可以用 ToolCallingAgent,走常规的 JSON tool-calling 路线。其他卖点也很实在:模型无绑定(HF 推理接口、OpenAI、Anthropic、本地 Transformers / Ollama 都能接,LiteLLM 一把梭),工具无绑定(MCP Server、LangChain 工具、甚至一个 Hub Space 都能当工具挂上去),多模态输入(文本、图片、视频、音频),还能一键把 Agent 推到 Hub 上分享给别人。
说人话:这就是 HuggingFace 给“想快速把 LLM 变成干活 Agent 的人”准备的一套轻量起手式,几行代码就能跑。
上手:三步跑起第一个 Agent
环境要求很低,有 Python 和 pip 就行:
pip install "smolagents[toolkit]"
然后写个最简 Agent(默认走 HuggingFace 推理接口):
from smolagents import CodeAgent, InferenceClientModel
model = InferenceClientModel()
agent = CodeAgent(tools=[], model=model)
print(agent.run("计算 1 到 100 的和"))
想让它联网干活,加个搜索工具就行:
from smolagents import CodeAgent, InferenceClientModel, DuckDuckGoSearchTool
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)
print(agent.run("巴黎现在的天气怎么样?"))
想省钱跑本地?模型换成 Ollama 即可,本地模型那套玩法可以参考本站之前写的 Ollama 本地模型总开关。如果你要做的是带知识库的企业级应用,那更重的 Dify 一锅端方案可能更合适;smolagents 的定位是轻、快、代码可控。
安全方面注意一点:CodeAgent 是真的在执行模型写的代码,官方支持 E2B、Modal、Docker、Blaxel 等沙箱执行,真要联网跑任务,别在裸机 Python 里直接执行。实测下来还有个细节很讨喜:它的流式输出和日志非常直白,Agent 每一步想干什么、调了哪个工具、代码报错了几次,全摆在明面上,调试体验比那些黑盒框架好得多。新手拿它入门,能真正看懂 Agent 的“思考—行动—观察”循环是怎么转起来的,而不是对着一堆抽象概念发蒙。
实话:适合谁,不适合谁
实话实说,smolagents 的“小”既是优点也是代价。优点:源码一千行左右,出问题你真能读进去修;抽象少,不会被框架绑架;HF 生态加持,模型和工具资源管够。代价:企业级 Agent 平台那种开箱即用的东西(用户管理、工作流编排 UI、RAG 管线、评估体系)它一概没有,都得自己拼。
所以结论很直接:个人开发者、想快速验证想法、想把 Agent 逻辑写成代码牢牢攥在手里的人,smolagents 是目前最顺手的选择之一;要给全公司搭 Agent 中台、要不写代码拖拽上线,还是去看 Dify、Flowise 这类平台。工具没有高低,只有合不合适。
署名
by 数码罗记·godsun.pro