SmolAgents:超级简单!三行代码构建一个代理,通过实时生成代码并执行,Agent的定义,终于开始收敛了。

大模型向量数据库云通信

🍹 Insight Daily 🪺

Aitrainee | 公众号:AI进修生

Hi,这里是Aitrainee,欢迎阅读本期新文章。

2025年被称为"代理之年",各大公司都在推出自己的框架。

但Anthropic的建议值得注意:

不是所有任务都需要代理,很多时候,传统的工作流就能解决问题。

在这样的背景下,Hugging Face推出了SmolAgents。

picture.image

它只有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页面的示例代码。

picture.image

配置LLM环境变量


        
            

          %env GEMINI\_API\_KEY = AIzaSyBwLpnCM\_6H2NFxrHOk046prUIcG75st70
        
      

我在Colab中演示:

picture.image

让他查询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进修生公众号信息"))
      

输出:

picture.image

非常好,非常厉害,文章都让他找到了。

时间上也挺快的,4.57 秒:

picture.image

再让他查询上海天气:


          
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("上海的天气怎么样?"))
      

picture.image

4.92秒后出来了:

picture.image

你可以看到它实时产生了代码,去完成我们这个需求:

picture.image

也许你看我的整个对话,可以更清楚他怎么创建代码的这个过程:

picture.image

我的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框架的未来方向。

所以 。。。

picture.image

这个框架背后可能是整个AI社区近两年的思考和积累。

它提醒我们:有时候,小而精才是最好的选择。

在代理技术蓬勃发展的2025年,SmolAgents用最简单的方式,解决了最关键的问题。

🌟 知音难求,自我修 炼亦艰, 抓住前沿技术的机遇,与我们一起成为创新的超级个体 (把握AIGC时代的个人力量)。

参考链接:
[1] https://web.lmarena.ai/leaderboard

[2] https://tereza-tizkova.medium.com/which-llm-is-really-the-best-3920b5af2ae6

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image

0
0
0
0
关于作者
相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论