书生大模型实战营第四期进阶岛-Lagent:从零搭建你的Multi-Agent

134 阅读4分钟

书生大模型实战营第四期进阶岛-Lagent:从零搭建你的Multi-Agent

参考文档:github.com/InternLM/Tu…

知识梳理

什么是Agent

Agent是一种能够自主感受外部环境并根据感知结果采取行动的实体,以感知序列为输入,以动作作为输出的函数。它可以以软件形式(聊天机器人,推荐系统)或物理形态(自动驾驶汽车,机器人)存在。 基本特性:

  1. 自主性:能够在没有外部干预的情况下做出决策。
  2. 交互性:能够与环境交换信息。
  3. 适应性:能够根据环境的变换调整自身行为。
  4. 目的性:所有行为都以实现特定目标为导向。

Agent应用场景

image.png

Lagent基础介绍

Lagent是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。Lagent目前已经支持了包括了AutoGPT,ReAct等在内的多个经典智能体范式,也支持了如下工具:

image.png 其基本结构如下:

image.png 常见工具调用能力范式

通用智能体范式

这种范式强调模型无需依赖特定的特殊标记(special token)来定义工具调用的参数边界。模型依靠其强大的指令跟随与推理能力,在指定的system prompt框架下,根据任务需求自动生成响应。这种方式让模型在推理过程中能够灵活适应多种任务,不需要对tokenizer进行特殊设计。
优势:

  • 灵活适应不同任务,无需设计和维护复杂的标记系统。
  • 适合快速迭代,降低微调和部署的复杂性。
  • 更容易与多模态输入(文本和图像)结合,扩展模型的通用性。

劣势:

  • 没有明确的标记,调用工具时的错误难以捕捉和分析纠正。
  • 在复杂任务中,模型生成可能不够精确,导致工具调用的准确性下降。

ReAct:将模型的推理分为Reason和Action两个步骤,并让他们交替执行,直到得到最终结果:

  • Reason:生成分析步骤,解释当前任务的上下文或状态,帮助模型理解下一步行动的逻辑依据。
  • Action:基于Reason的结果,生成具体的工具调用请求(如查询搜索引擎,调用API,数据库检索等),将模型的推理转化为行动。

ReWoo:全称为Reason Without Observation,是在ReAct范式基础上进行改进的Agent架构,针对多工具调用的复杂性和与冗杂性提供了一种高效的解决方案。相比于ReAct中的交替推理和行动,ReWoo直接生成一次性使用的完整工具链,减少了不必要的token消耗和时间,同时,由于工具调用的规划与执行解耦,这一范式在模型微调时不需要实际调用工具即可完成。

image.png

模型特化智能体范式

在这种范式下,模型的工具调用必须通过特定的special token明确标记。如InternLM2使用<|action_start|><|action_end|>来定义调用边界。这些标记通常与模型的Tokenizer深度集成,确保在执行特定任务时,能够准确捕捉调用信息并执行。

image.png

闯关任务

Lagent Web Demo

配置环境后,编写agent_api_web_demo.py代码

image.png

Lagent Web Demo页面
没有插件之前

image.png
添加ArxivSeacrh插件之后

image.png

制作一个输入自己的Agent

使用和风天气API

image.png 可以看到,没有添加插件之前系统返回的答案是错误的(天气状况显然不是实时的),同时添加多个插件,运行效果也是成功的。 image.png

Multi-Agent博客写作系统的搭建

使用Lagent来构建一个多智能体系统(Multi-Agent System),展示如何协调不同的智能代理完成内容生成和优化的任务。这里的多智能体系统指的是:

  • 内容生成代理:负责根据用户的主题提示生成一篇结构化,专业的文章或者报告。
  • 批评优化处理:负责审阅生成的内容,指出不足,推荐合适的文献,使文章更加完善。

Multi-Agents博客写作系统的流程图如下:

image.png

Multi-Agents博客写作系统按照下面步骤,生成-批评-完善内容 image.png

最终效果:

image.png