书生大模型实战营第四期进阶岛-Lagent:从零搭建你的Multi-Agent
知识梳理
什么是Agent
Agent是一种能够自主感受外部环境并根据感知结果采取行动的实体,以感知序列为输入,以动作作为输出的函数。它可以以软件形式(聊天机器人,推荐系统)或物理形态(自动驾驶汽车,机器人)存在。 基本特性:
- 自主性:能够在没有外部干预的情况下做出决策。
- 交互性:能够与环境交换信息。
- 适应性:能够根据环境的变换调整自身行为。
- 目的性:所有行为都以实现特定目标为导向。
Agent应用场景
Lagent基础介绍
Lagent是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。Lagent目前已经支持了包括了AutoGPT,ReAct等在内的多个经典智能体范式,也支持了如下工具:
其基本结构如下:
常见工具调用能力范式
通用智能体范式
这种范式强调模型无需依赖特定的特殊标记(special token)来定义工具调用的参数边界。模型依靠其强大的指令跟随与推理能力,在指定的system prompt框架下,根据任务需求自动生成响应。这种方式让模型在推理过程中能够灵活适应多种任务,不需要对tokenizer进行特殊设计。
优势:
- 灵活适应不同任务,无需设计和维护复杂的标记系统。
- 适合快速迭代,降低微调和部署的复杂性。
- 更容易与多模态输入(文本和图像)结合,扩展模型的通用性。
劣势:
- 没有明确的标记,调用工具时的错误难以捕捉和分析纠正。
- 在复杂任务中,模型生成可能不够精确,导致工具调用的准确性下降。
ReAct:将模型的推理分为Reason和Action两个步骤,并让他们交替执行,直到得到最终结果:
- Reason:生成分析步骤,解释当前任务的上下文或状态,帮助模型理解下一步行动的逻辑依据。
- Action:基于Reason的结果,生成具体的工具调用请求(如查询搜索引擎,调用API,数据库检索等),将模型的推理转化为行动。
ReWoo:全称为Reason Without Observation,是在ReAct范式基础上进行改进的Agent架构,针对多工具调用的复杂性和与冗杂性提供了一种高效的解决方案。相比于ReAct中的交替推理和行动,ReWoo直接生成一次性使用的完整工具链,减少了不必要的token消耗和时间,同时,由于工具调用的规划与执行解耦,这一范式在模型微调时不需要实际调用工具即可完成。
模型特化智能体范式
在这种范式下,模型的工具调用必须通过特定的special token明确标记。如InternLM2使用<|action_start|>和<|action_end|>来定义调用边界。这些标记通常与模型的Tokenizer深度集成,确保在执行特定任务时,能够准确捕捉调用信息并执行。
闯关任务
Lagent Web Demo
配置环境后,编写agent_api_web_demo.py代码
Lagent Web Demo页面
没有插件之前
添加ArxivSeacrh插件之后
制作一个输入自己的Agent
使用和风天气API
可以看到,没有添加插件之前系统返回的答案是错误的(天气状况显然不是实时的),同时添加多个插件,运行效果也是成功的。
Multi-Agent博客写作系统的搭建
使用Lagent来构建一个多智能体系统(Multi-Agent System),展示如何协调不同的智能代理完成内容生成和优化的任务。这里的多智能体系统指的是:
- 内容生成代理:负责根据用户的主题提示生成一篇结构化,专业的文章或者报告。
- 批评优化处理:负责审阅生成的内容,指出不足,推荐合适的文献,使文章更加完善。
Multi-Agents博客写作系统的流程图如下:
Multi-Agents博客写作系统按照下面步骤,生成-批评-完善内容
最终效果: