🍹 Insight Daily 🪺
Aitrainee | 公众号:AI进修生
Hi,这里是Aitrainee,欢迎阅读本期新文章。
2025年被称为"代理之年",各大公司都在推出自己的框架。
但Anthropic的建议值得注意:
不是所有任务都需要代理,很多时候,传统的工作流就能解决问题。
在这样的背景下,Hugging Face推出了SmolAgents。
它只有1000行代码,数字令人 ... 惊讶。 。 。
不像Crew AI、Autogen, 功能丰富但复杂 。
SmolAgents选择了 最小抽象,专注于生产环境 最需要的功能。
事实上,Hugging Face并非第一次尝试代理库。
早在2023年5月,他们就推出了第一版Transformers agents。
但由于各种原因,它并未广泛流行。
这个过程反映了整个AI社区的探索:在过去18个月里,大家一直在思考如何构建代理,不断尝试,不断调整。
Hugging Face最大的优势在于Hugging Face Hub上拥有大量开源模型。
这个优势在SmolAgents中得到了充分体现。
它最大的创新是 将所有的操作写成代码。
所以, 本质上,这是一个:
可以即时生成代码并执行的代理, 如果遇到错误,还能自动恢复和重写。
这种方式比传统代理更高效,API调用减少30%,性能提升明显。
为了安全,SmolAgents提供了专门的Python解释器和沙盒环境。
虽然名字叫"Smol",但这指的是框架本身的体积,而不是能力。
它完全支持Hugging Face的开源模型,也能通过API对接私有模型。
像 OpenAI、Claude 等等。。。
最令人印象深刻的是,只需三行代码就能构建第一个代理。
它甚至能构建代理-检索-生成系统(Agent-RAG)。
所有操作都通过代码执行,错误恢复机制确保代码始终可用。
来吧,实际上手一下吧。
第一步,用pip install smol-agents安装代理包。
pip install smolagents
打开示例Python文件,复制GitHub页面的示例代码。
配置LLM环境变量
%env GEMINI\_API\_KEY = AIzaSyBwLpnCM\_6H2NFxrHOk046prUIcG75st70
我在Colab中演示:
让他查询AI进修生公众号信息:
from smolagents.agents import ToolCallingAgent
from smolagents import tool, LiteLLMModel
from typing import Optional
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
model = LiteLLMModel(model_id="gemini/gemini-2.0-flash-exp")
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)
print(agent.run("AI进修生公众号信息"))
输出:
非常好,非常厉害,文章都让他找到了。
时间上也挺快的,4.57 秒:
再让他查询上海天气:
from smolagents.agents import ToolCallingAgent
from smolagents import tool, LiteLLMModel
from typing import Optional
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
# Choose which LLM engine to use!
# model = HfApiModel(model_id="meta-llama/Llama-3.3-70B-Instruct")
# model = TransformersModel(model_id="meta-llama/Llama-3.2-2B-Instruct")
# For anthropic: change model_id below to 'anthropic/claude-3-5-sonnet-20240620'
model = LiteLLMModel(model_id="gemini/gemini-2.0-flash-exp")
@tool
def get_weather(location: str, celsius: Optional[bool] = False) -> str:
"""
Get weather in the next days at given location.
Secretly this tool does not care about the location, it hates the weather everywhere.
Args:
location: the location
celsius: the temperature
"""
return "The weather is UNGODLY with torrential rains and temperatures below -10°C"
agent = ToolCallingAgent(tools=[get_weather], model=model)
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)
print(agent.run("上海的天气怎么样?"))
4.92秒后出来了:
你可以看到它实时产生了代码,去完成我们这个需求:
也许你看我的整个对话,可以更清楚他怎么创建代码的这个过程:
我的colab笔记本: https://colab.research.google.com/drive/1tCJCaF-GHOA68rC9DMShkllj7ft5e0iP#scrollTo=A9Zhiy7AjQmS
总得来说:
创建代理很简单:导入SmolAgent库,配置工具和模型。
DuckDuckGo搜索工具是默认配置,免费好用,不需要API密钥。
默认使用Hugging Face推理API,但我们可以换成LiteLLMM或者Gemini 2.0 Flash API,它最近表现很出色。
导出API密钥后,就能开始使用了。它不只能搜索网页,还能执行代码。
你还能改变系统提示,添加其他工具,甚至自定义工具。
E2B代码沙箱是个很棒的功能,让所有代码在云端安全运行。它提供免费套餐,只需要导出API密钥就能用。
限制迭代次数等功能也有。
整个框架体积小,功能强,使用简单。
独特的代码代理让它很容易集成到应用中,效果很好。
最后,博主Sam Witteveen说得很好:
Agent的定义,终于开始收敛了。
从最初的混沌,到现在的清晰,这是一个漫长的过程。
每个框架都在寻找最佳实践。
最早的BabyAGI和AutoGPT给了Agent完全的自由。
它们可以自主决策,随意调用工具,像个不受控制的孩子。
想做什么就做什么,不需要人类干预。
结果就是token费用暴涨,执行效率低下,还容易出错。
LangGraph选择了完全相反的路。
它给Agent戴上了"枷锁",严格限制它们的行为范围。 只能在预设的轨道上运行,不能随意发挥。
2024年的实践证明,这种方式更可靠,更安全,也更容易控制成本。
现在的模型越来越强大,准确度和理解能力都有了质的飞跃。
我们开始思考:要不要给Agent更多自由?
工具调用让它们能够使用外部功能,多步骤循环让它们能够持续工作,
多Agent协作让它们能够分工配合。
CrewAI和Phi AI都在这些方向上进行了深入探索。
但是,真的需要那么复杂的框架吗?
像Pydantic AI这样的轻量工具,其实就能完成大部分任务。
定义好接口,写好函数,用纯Python就能搞定。
smolagents看到了这一点,它想在复杂和简单之间找到完美的平衡点。
代码Agent是smolagents最大的特色。
从2022年的PAL(Program Aided Language Model)到现在的Code Act,让Agent直接用Python执行代码、处理反馈,这个方向很有前景。
它不仅支持E2B沙盒环境保证安全性,还保留了传统的工具调用功能,给了开发者更多选择。
作为transformer agents的继任者,smolagents用最简单的代码实现了强大的功能。
不需要复杂的配置,不需要深奥的概念,写几行代码就能上手。
这种简单易用的特性,可能就是Agent框架的未来方向。
所以 。。。
这个框架背后可能是整个AI社区近两年的思考和积累。
它提醒我们:有时候,小而精才是最好的选择。
在代理技术蓬勃发展的2025年,SmolAgents用最简单的方式,解决了最关键的问题。
🌟 知音难求,自我修 炼亦艰, 抓住前沿技术的机遇,与我们一起成为创新的超级个体 (把握AIGC时代的个人力量)。
参考链接:
[1] https://web.lmarena.ai/leaderboard
[2] https://tereza-tizkova.medium.com/which-llm-is-really-the-best-3920b5af2ae6
点这里👇关注我,记得标星哦~
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见 ~