smolagents 介绍
1. 模块概览
本模块全面概述使用 smolagents
构建智能 Agent 的关键概念和实践策略。
在众多开源框架中,理解 smolagents
的组件和功能至关重要,这有助于判断它是否是合适的选择,或者何时其它解决方案可能更合适。
我们将探讨关键的 Agent 类型,包括为软件开发任务设计的 Code Agent,用于创建模块化、函数驱动工作流的 ToolCalling Agent,以及能够访问和整合信息的 Retrieval Agent。
此外,还将介绍多 Agent 的编排,以及视觉能力和网页浏览的集成,这些功能为动态和上下文感知的应用程序开启新的可能性。
2. 内容
2.1. 为什么使用 smolagents
smolagents
是众多可用于应用开发的开源 Agent 框架之一。其它选择包括 LlamaIndex
和 LangGraph
。smolagents
提供若干关键特性,可能使其特别适合某些特定用例,但在选择框架时,我们始终应该考虑所有选项。我们将探讨使用 smolagents
的优势和缺点,帮助您根据项目需求做出明智的决定。
2.2. Code Agent
Code Agent 是 smolagents
中的主要 Agent 类型。与生成 JSON 或文本不同,Code Agent 生成 Python 代码,执行行动。
2.3. ToolCalling Agent
ToolCalling Agent 是 smolagents
支持的第二种 Agent 类型。与 Code Agent 不同,这种 Agent 依赖系统必须解析和解释的 JSON/文本数据块,执行行动。
2.4. 工具(Tool)
在 Agent 系统中,工具是 LLM 可以使用的函数,它们是 Agent 行为的基本构件。
2.5. Retrieval Agent
Retrieval Agent 使模型能够访问知识库,从而可以从多个来源搜索、综合和检索信息。它们利用向量存储实现高效检索,并且实现检索增强生成(RAG)模式。这些 Agent 特别适合将网络搜索与自定义知识库集成,同时通过记忆系统保持会话上下文。
2.6 多 Agent 系统
有效编排多个 Agent 对于构建强大的多 Agent 系统至关重要。通过组合具有不同能力的 Agent - 比如将网络搜索 Agent 与代码执行 Agent 结合 - 可以创建更复杂的解决方案。
2.7. 视觉和浏览器 Agent
视觉 Agent 通过整合视觉语言模型(VLM)扩展传统 Agent 的能力,使其能够处理和解释视觉信息。本模块探讨如何设计和集成基于 VLM 的 Agent,从而开启基于图像的推理、视觉数据分析和多模态交互等高级功能。我们还将使用视觉 Agent 构建能够浏览网页,并且从中提取信息的浏览器 Agent。
3. smolagents 是什么
smolagents
是用于构建 AI Agent 的简单且强大的框架。它为 LLM 提供与现实世界互动的代理,比如搜索或生成图像。
AI Agent 是使用 LLM 基于观测(Observation)生成思考(Thought),从而执行行动(Action)的程序。
3.1. smolagents 的主要优点
- 简单:最小化代码复杂度和抽象层次,使框架易于理解、使用和扩展。
- 灵活的 LLM 支持:通过与 Hugging Face 工具和外部 API 的集成,可以与任何 LLM 配合使用。
- 代码优先方式:支持直接使用代码编写其行动的 Code Agent,无需解析过程,简化工具调用。
- HF Hub 集成:与 Hugging Face Hub 无缝集成,允许将 Gradio Spaces 作为工具使用
3.2. 何时使用 smolagents
考虑到这些优势,什么时候应该选择使用 smolagents
而不是其它框架呢?
smolagents
在以下情况下是理想选择:
- 当需要轻量、简约的解决方案时
- 当想要快速实验而无需复杂配置时
- 当应用程序逻辑简单直接时
3.3. Code vs JSON Action
与其它框架中 Agent 以 JSON 格式编写行动不同,smolagents
专注于在代码中直接进行工具调用,从而简化执行过程。这是因为不需要通过解析 JSON 的方式,构建调用工具的代码:输出可以直接执行。
下图说明该差异:

3.4. smolagents 中的 Agent 类型
smolagents
中的 Agent 以多步骤 Agent 的方式运行。
每个 MultiStepAgent
执行:
- 一次思考
- 一次工具调用和执行
除使用 Code Agent 作为主要类型的 Agent 外,smolagents
还支持 ToolCalling Agent,它以 JSON 形式编写工具调用。
在
smolagents
中,使用包装 Python 函数的@tool
装饰器或Tool
类定义工具。
3.5. 模型集成
smolagents
支持灵活的 LLM 集成,允许使用任何符合特定标准的可调用模型。框架提供若干预定义类简化模型连接:
- TransformersModel:实现本地 transformers 流水线,以实现无缝集成。
- HfApiModel:通过 Hugging Face 的基础设施或越来越多的第三方推理服务提供商,支持 Serverless 推理调用。
- LiteLLMModel:利用 LiteLLM 进行轻量级模型交互。
- OpenAIServerModel:连接到任何提供 OpenAI API 接口的服务。
- AzureOpenAIServerModel:支持与任何 Azure OpenAI 部署集成。
该灵活性确保开发人员可以选择最适合其特定用例的模型和服务,并且支持简单的实验。