smolagent框架

什么是 smolagents?

smolagents 是一个简单而强大的用于构建 AI Agent 的框架。它为大语言模型 (LLM) 提供了与现实世界互动的 自主性,例如搜索或生成图像。

正如我们在第一单元中学到的,AI Agent 是使用 LLM 根据 "观察" 来生成 "思考" ,从而执行 "动作" 的程序。让我们来探讨一下这在 smolagents 中是如何实现的。

smolagents 的主要优势

  • 简洁性: 最小化的代码复杂度和抽象,使框架易于理解、采用和扩展。
  • 灵活的 LLM 支持: 通过与 Hugging Face 工具和外部 API 集成,可与任何 LLM 配合使用。
  • 代码优先的方法: 对直接用代码编写动作的 Code Agent 提供一流支持,无需解析并简化了工具调用。
  • HF Hub 集成: 与 Hugging Face Hub 无缝集成,允许将 Gradio Spaces 用作工具。

何时使用 smolagents?

考虑到这些优势,我们应该在什么时候选择 smolagents 而不是其他框架呢?

smolagents 是以下情况的理想选择

  • 您需要一个 轻量级且极简的解决方案。
  • 您想 快速进行实验,而不需要复杂的配置。
  • 您的 应用程序逻辑简单明了。

构建使用代码的 Agent

代码 Agent 是 smolagents 中的默认 Agent 类型。它们生成 Python 工具调用来执行动作,从而实现高效、富有表现力且准确的动作表示。

为何选择代码 Agent?

在多步 Agent 流程中,LLM 编写并执行动作,通常涉及外部工具调用。传统方法使用 JSON 格式指定工具名称和参数(作为字符串),系统必须解析这些信息才能确定执行哪个工具

然而,研究表明,直接使用代码能让工具调用型 LLM 更有效地工作

用代码而非 JSON 编写动作有以下几个关键优势:

  • 可组合性:轻松组合和重用动作
  • 对象管理:直接处理复杂结构,如图像
  • 通用性:能够表达任何计算上可能的任务
  • 对 LLM 更自然:高质量的代码已经存在于 LLM 的训练数据中

代码 Agent 如何工作?

上图展示了 CodeAgent.run() 的工作方式,它遵循了我们在第一单元中提到的 ReAct 框架。smolagents 中 Agent 的主要抽象是 MultiStepAgent,它是核心构建块。CodeAgent 是一种特殊的 MultiStepAgent,我们将在下面的例子中看到。

一个 CodeAgent 通过一系列步骤的循环来执行动作,现有的变量和知识被整合到 Agent 的上下文中,并保存在执行日志中。

  1. 系统提示存储在 SystemPromptStep 中,用户查询则记录在 TaskStep 中。

  2. 然后,执行以下 while 循环:

    2.1 方法 agent.write_memory_to_messages() 将 Agent 的日志写入一个 LLM 可读的聊天消息列表。

    2.2 这些消息被发送给一个 Model,该模型生成一个补全。

    2.3 解析补全以提取动作,在我们的例子中,由于我们使用的是 CodeAgent,这个动作应该是一个代码片段。

    2.4 执行该动作。

    2.5 结果被记录到内存中的一个 ActionStep 里。

相关推荐
一尘之中2 小时前
从C语言底层设计到系统架构评估:软件架构知识体系全景
学习·系统架构·ai写作
星夜夏空994 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
不羁的木木4 小时前
ArkWeb实战学习笔记05-综合实战:构建混合应用
笔记·学习·harmonyos
橙橙笔记4 小时前
Python的学习第一部分
python·学习
bush44 小时前
嵌入式linux学习记录二
linux·运维·学习
元气少女小圆丶6 小时前
SenseGlove Nova 2+Unity开发笔记1
笔记·学习·unity
nashane7 小时前
HarmonyOS 6学习:应用退出动画优化实战——从“闪退“到优雅退出的完美蜕变
学习·华为·harmonyos
-To be number.wan7 小时前
算法日记 | 暴力枚举
学习·算法
SNKXD_18 小时前
2026品牌运营团队AI营销培训:TOP5轻量化课程适配常态化技能升级学习
大数据·人工智能·学习
小新同学^O^9 小时前
简单学习 --> 指令微调
人工智能·学习·llm·指令微调