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 里。

相关推荐
东京老树根21 小时前
SAP学习笔记 - BTP CAP开发02 - Assosication,Composition,?$expand=books
笔记·学习
Slow菜鸟1 天前
AI学习篇(五) | awesome-design-md 使用说明
人工智能·学习
狐狐生风1 天前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
狐狐生风1 天前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
努力努力再努力FFF1 天前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
sakiko_1 天前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
Alice-YUE1 天前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
北山有鸟2 天前
修改源码法和插件法
嵌入式硬件·学习
richxu202510012 天前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
qeen872 天前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·