smolagents:代码思考AI代理的轻量级库

smolagents

4 | 258 | 0
类型:
开源项目
最后更新:
2025/10/03
资源描述:
smolagents 是一个简约的 Python 库,用于创建通过代码推理和行动的 AI 代理。它支持模型无关的 LLM、安全沙箱以及与 Hugging Face Hub 的无缝集成,实现高效的基于代码的代理工作流。
分享:
代码代理
LLM集成
沙箱执行
代理框架
ReAct代理

smolagents 概述

什么是 Smolagents?

Smolagents 是一个轻量级的开源 Python 库,旨在简化创建 AI 代理的过程,这些代理主要通过代码进行推理和执行操作。由 Hugging Face 团队开发,它以其极简主义方法脱颖而出,仅用大约 1,000 行核心代码就打包了强大的代理能力。与臃肿的框架不同,smolagents 剥离了不必要的抽象,专注于原始效率,同时支持高级功能,如安全的代码执行和与大型语言模型 (LLMs) 的无缝集成。

在其核心,smolagents 使开发者能够构建“用代码思考”的代理,这意味着 AI 生成 Python 代码片段来执行任务,而不是依赖僵硬的 JSON 工具调用。这种代码中心范式已被证明可以减少复杂工作流中的步骤高达 30%,使其非常适合需要多步骤推理的任务,例如网络搜索、数据分析或规划行程。无论您是使用开源模型进行实验的研究人员,还是部署生产代理的工程师,smolagents 都为代理式 AI 系统提供了灵活的基础。

Smolagents 如何工作?

Smolagents 基于 ReAct 启发的循环(推理和行动),但有一个转折:LLM 生成 Python 代码片段作为行动,而不是结构化输出。以下是其核心机制的分解:

  • 代理初始化:您从定义一个代理开始,例如旗舰 CodeAgent,并为其配备工具(例如网络搜索、文件 I/O)和模型后端。

  • 推理阶段:LLM(任何支持的模型)接收任务提示、过去的观察和可用工具。它逐步推理并输出描述预期行动的 Python 代码块。

  • 执行阶段:代码片段在受控环境中执行。为了安全,smolagents 支持沙箱,如 E2B、Modal、Docker,甚至基于浏览器的 Pyodide 与 Deno WebAssembly。这可以防止任意代码损害您的系统。

  • 观察和迭代:执行结果反馈到循环中,允许代理完善其方法,直到任务完成。

例如,要回答像“一只豹子以全速跑过 Pont des Arts 需要多少秒?”这样的查询,代理可能会生成代码来搜索豹子速度、桥梁长度并进行计算——所有这些都在一个高效的片段中。这与传统代理形成对比,后者可能需要多个工具调用,导致更多 LLM 调用和更高成本。

Smolagents 还包括 ToolCallingAgent 用于经典的 JSON 基于行动,给用户带来灵活性。支持多代理层次结构,其中一个代理委托给其他代理,从而提升复杂应用的 scalability。

Smolagents 的核心功能

尽管体积小,Smolagents 却功能强大。主要功能包括:

  • 简单性和极简主义agents.py 中的核心逻辑不到 1,000 行,便于理解、修改和扩展。没有陡峭的学习曲线——只是纯 Python。

  • 模型无关设计:通过 Hugging Face 的 InferenceClient、LiteLLM(100+ 提供商)、OpenAI、Anthropic、本地 Transformers、Ollama、Azure 或 Amazon Bedrock 等集成,与任何 LLM 兼容。轻松切换模型而无需重写代码。

  • 模态支持:处理文本、视觉、视频和音频输入。例如,视觉启用代理可以处理图像与文本提示一起,如专用教程所示。

  • 工具灵活性:从任何地方集成工具——LangChain 库、MCP 服务器,甚至 Hugging Face Spaces。默认工具包包括 Web 搜索和代码执行等必需品。

  • Hub 集成:直接从 Hugging Face Hub 分享和加载代理。将您的自定义代理作为 Space 仓库推送到协作:agent.push_to_hub("username/my_agent")

  • 安全执行:优先考虑安全,提供沙箱选项。E2B 和 Modal 提供基于云的隔离,而 Docker 适合本地设置。内置的安全 Python 解释器为较低风险环境添加额外层。

  • CLI 工具:通过 smolagent 在命令行运行代理,用于一般任务(例如,使用 Web 搜索和数据导入的行程规划)或使用 Helium 的 webagent 用于浏览器自动化。

这些功能使 smolagents 适用于原型制作和生产,强调性能而非复杂性。

如何使用 Smolagents:一步步指南

入门很简单。通过 pip 安装:pip install "smolagents[toolkit]" 以包含默认工具。

基本代码代理示例

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

model = InferenceClientModel(model_id="microsoft/DialoGPT-medium")  # Or any LLM
agent = CodeAgent(tools=[WebSearchTool()], model=model, stream_outputs=True)
result = agent.run("Plan a trip to Tokyo, Kyoto, and Osaka between Mar 28 and Apr 7.")
print(result)

此设置利用代码生成进行多工具行动,如批量搜索或计算。

CLI 使用

对于无需脚本的快速运行:

  • smolagent "Query here" --model-type InferenceClientModel --model-id Qwen/Qwen2.5-Coder-32B-Instruct --tools web_search --imports pandas numpy
  • Web 特定:webagent "Navigate to site and extract details" --model-type LiteLLMModel --model-id gpt-4o

高级:沙箱执行

要启用 E2B 沙箱:

agent = CodeAgent(..., executor="e2b")  # Or "modal", "docker"

这确保代码在隔离环境中运行,对于不受信任的 LLM 输出至关重要。

分享和加载代理

导出到 Hub 以重复使用:

agent.push_to_hub("my_agent_space")
loaded_agent = CodeAgent.from_hub("my_agent_space")

理想用于团队项目或公共基准测试。

基准测试显示,像 Qwen2.5-Coder 这样的开源模型在代理任务中可以与闭源模型(如 GPT-4)匹敌,代码代理通过处理数学、搜索和规划等多样化挑战而优于 vanilla LLMs。

主要用例和实际价值

Smolagents 在需要高效代码驱动自动化的场景中大放异彩:

  • 研究与开发:使用开源 LLM 原型代理工作流。研究人员可以对自定义任务基准模型,利用库的透明度。

  • 数据分析和规划:代理处理 Web 抓取、计算和行程构建——例如,使用实时搜索和 pandas 数据处理的旅行规划。

  • Web 自动化:使用 webagent 进行电子商务、内容提取或测试,安全模拟用户交互。

  • 多模态任务:结合视觉模型进行图像分析与代码执行,例如处理视频帧或从视觉生成报告。

  • 生产部署:通过 Hub Spaces 或 CLI 集成到应用中,实现可扩展、低延迟代理。

其实际价值在于效率:更少的 LLM 调用意味着更低的成本和更快的响应。例如,代码片段启用并行行动(例如,一次多个搜索),提升吞吐量 30%。它是 Apache-2.0 许可的,鼓励社区贡献——超过 185 名贡献者添加了如多语言文档和远程执行器等功能。

安全内置,处理代码执行风险通过沙箱和最佳实践,使其适合企业使用。

Smolagents 适合谁?

  • 开发者和 AI 工程师:厌倦过度工程化框架的人会欣赏其可黑客的核心。为特定工具或层次自定义代理。

  • 研究人员:在代理基准中测试开源 vs. 闭源模型;使用提供的 BibTeX 在论文中引用。

  • 初创公司和团队:快速设置原型,Hub 分享用于协作。

  • 业余爱好者:CLI 工具降低实验 AI 代理的门槛。

如果您正在构建代理系统并重视简单性而非臃肿,smolagents 是您的首选。为什么选择它?它使高级代理民主化,证明开源模型可以匹配专有能力,同时保持轻量和安全。

更多信息,请查看 huggingface.co/docs/smolagents 的完整文档,或深入 GitHub 仓库。通过指南贡献来塑造其未来!

"smolagents"的最佳替代工具

Gentrace
暂无图片
22 0

Gentrace 帮助追踪、评估和分析 AI 代理的错误。与 AI 聊天以调试追踪,自动化评估,并微调 LLM 产品以实现可靠的性能。今天免费开始!

AI 调试
LLM 监控
AI 评估
Shell2
暂无图片
20 0

Shell2 是 Raiden AI 提供的 AI 助手交互平台,提供数据分析、处理和生成功能。它具有会话持久性、用户上传、多人协作和不受限制的环境等特性。

AI助手
代码解释器
数据分析
Fetch.ai
暂无图片
56 0

Fetch.ai是一个支持代理经济的平台,允许用户构建、发现和交易AI代理。它具有诸如用于创建和探索代理的Agentverse以及用于访问ASI生态系统的ASI Wallet等工具。

代理AI
LLM
Olostep
暂无图片
198 0

Olostep 是一款面向 AI 和研究代理的 Web 数据 API。 它允许您实时从任何网站提取结构化 Web 数据,并自动执行 Web 研究工作流程。 用例包括 AI 数据、电子表格扩充、潜在客户生成等。

网络数据提取
AI API
网页抓取
AgentQL
暂无图片
714 0

AgentQL 将 LLM 和 AI 代理连接到 Web,为开发人员和数据工作流实现自然语言查询、Web 数据连接和精确自动化。

网络数据提取
LLM 集成
Flowise
暂无图片
425 0

Flowise是一个开源生成式AI开发平台,用于可视化构建AI代理和LLM编排。通过拖放式用户界面,在几分钟内构建自定义LLM应用。

无代码AI
LLM编排
TypingMind
暂无图片
300 0

使用您的API密钥与AI聊天。只为您使用的付费。支持GPT-4、Gemini、Claude和其他LLM。适用于所有AI模型的最佳聊天LLM前端UI。

LLM接口
AI代理构建器
插件集成
Chatsistant
暂无图片
281 0

Chatsistant 是一个多功能 AI 平台,用于创建由顶级 LLM(如 GPT-5 和 Claude)驱动的多代理 RAG 聊天机器人。适用于客户支持、销售自动化和电商,具有通过 Zapier 和 Make的无缝集成以实现高效部署。

多代理RAG
聊天机器人构建器
Plandex
暂无图片
293 0

Plandex 是一个开源的、基于终端的 AI 编码代理,专为大型项目和真实世界任务设计。它具有差异审查、全自动模式以及高达 2M 令牌的上下文管理功能,用于使用 LLM 高效进行软件开发。

编码代理
自主调试
大型代码库AI
Marvin
暂无图片
296 0

Marvin 是一个强大的 Python 框架,用于使用大语言模型 (LLM) 构建 AI 应用。它简化了状态管理、代理协调和结构化输出,适用于开发者创建智能应用。

Python AI框架
LLM代理
Bottr
暂无图片
328 0

Bottr 为企业提供一流的 AI 咨询和可定制聊天机器人。启动智能助手、自动化工作流,并与 GPT 和 Claude 等主要 LLM 集成,实现安全、可扩展的 AI 解决方案。

企业聊天机器人
AI工作流自动化
Potpie
暂无图片
252 0

构建面向任务的自定义代理,用于您的代码库,利用您的数据中的智能和上下文,以高精度执行工程任务。为系统设计、调试、集成测试、入职等用例构建代理。

代码库代理
调试自动化
测试生成
Invicta AI
暂无图片
358 0

使用 Invicta AI 构建无代码 AI 代理团队,以自动化复杂的工作流程。连接到 70 多个工具和领先的 LLM,实现近乎完美的可靠性和运营效率。

AI 代理
工作流程自动化
16x Prompt
暂无图片
417 0

16x Prompt 是一款 AI 编码工具,用于管理代码上下文、自定义提示,并通过 LLM API 集成更快地交付功能。非常适合寻求高效 AI 辅助编码的开发人员。

AI代码生成
提示管理
代码编辑器