《书生·浦语大模型实战营》第六节课《Lagent & AgentLego 智能体应用搭建》课程笔记

本次学习

2024年3月开始参加《书生·浦语大模型实战营》

https://openxlab.org.cn/models/InternLM/subject

相关链接

第一节课《书生·浦语大模型全链路开源体系》课程及 InternLM2 技术报告笔记在

https://blog.csdn.net/hu_zhenghui/article/details/137194274

第二节课《轻松玩转书生·浦语大模型趣味 Demo》课程笔记在

https://huzhenghui.blog.csdn.net/article/details/137403590

第二节课《轻松玩转书生·浦语大模型趣味 Demo》实践笔记在

https://huzhenghui.blog.csdn.net/article/details/137404579

第三节课《茴香豆:搭建你的 RAG 智能助理》课程笔记在

https://huzhenghui.blog.csdn.net/article/details/137691859

第三节课《茴香豆:搭建你的 RAG 智能助理》实践笔记在

https://huzhenghui.blog.csdn.net/article/details/137692249

第四节课《XTuner 微调 LLM:1.8B、多模态、Agent》课程笔记在

https://huzhenghui.blog.csdn.net/article/details/137951465

第四节课《XTuner 微调 LLM:1.8B、多模态、Agent》实践笔记在

https://huzhenghui.blog.csdn.net/article/details/136909890

第五节课《LMDeploy 量化部署 LLM 实践》课程笔记在

https://huzhenghui.blog.csdn.net/article/details/135050733

第五节课《LMDeploy 量化部署 LLM 实践》实践笔记在

https://huzhenghui.blog.csdn.net/article/details/136908934

这是《书生·浦语大模型实战营》第六节课《Lagent & AgentLego 智能体应用搭建》课程笔记

为什么要有智能体?

大语言模型的局限性

  • 幻觉
  • 时效性
  • 可靠性

幻觉

随着大语言模型的快速发展,逐渐发现即使是 GPT-4 这样的大语言模型,在某些场景下也不能满足实际需求,有着诸多的局限性,比如幻觉。

模型可能会生成虚假信息,与现实严重不符或脱节。

例如

鲁迅和周树人是同一个人吗?

鲁迅和周树人不是同一个人

时效性

由于大模型的训练数据往往截止到过去的某个时间,其训练数据是过时的。

模型训练数据过时,无法反映最新趋势和信息。

例如

今年是哪一年?

今年是2023年。

可靠性

面对复杂任务时,可能频发错误输出现象,影响信任度。

例如

你能帮我写一段微调LLM的代码吗?

def train():
  ...
  return 'Hello World'

由于上述因素,大语言模型的智能体应运而生。

什么是智能体?

Hayes-Roth1995 年发表论文An Architecture for Adaptive Intelligent Systems中提出,一个智能体应当满足以下三个条件

可以感知环境中的动态条件

(perception of dynamic conditions in the environment)

能采取动作影响环境。

(action to affect conditions in the environment)

能运用推理能力理解信息、解决问题、产生推断、决定动作

(reasoning to interpret perceptions, solve problems, draw inferences, and determine actions)

智能体组成

一个智能体主要包括三个部分

  • 大脑

作为控制器,承担记忆、思考和决策任务。接受来自感知模块的信息,并采取相应动作

  • 感知

对外部环境的多模态信息进行感知和处理。包括但不限于图像、音频、视频、传感器等。

  • 动作

利用并执行工具以影响环境。工具可能包括文本的检索、调用相关 API 、操控机械臂等。

这样的智能体也就满足了Hayes-Roth提出的智能体所要满足的三个条件。

智能体范式

AutoGPT
ReWoo
ReAct
结束
结束条件
执行工具
人工干预
选择工具
输入
DAG (有向无环图)
计划拆分
输入
结束
计划执行
结束
结束条件
执行工具
选择工具
输入

AutoGPT

AutoGPT
结束
结束条件
执行工具
人工干预
选择工具
输入

AutoGPT 基本流程

在这里插入图片描述

  1. 用户将目标和任务输入给整个系统
  2. 任务列表把任务发给对应的智能体
    • 智能体完成后将相关的任务和结果保存在记忆中
  3. 把结果发送给另外一个智能体
  4. 这个智能体创建新任务

由此循环直到最终完成任务。

ReWoo

ReWoo
将各种工具的依赖构成一个有向无环图
在有向无环图中进行计划执行
计划拆分
输入
DAG (有向无环图)
计划执行
结束
  1. ReWoo 将用户的输入做拆分
  2. 将各种工具之间的依赖形成一个有向无环图
  3. 在图中进行计划执行
  4. 直到达到最终结果

ReWoo 论文中的图

在这里插入图片描述

  1. Planner 将输入拆分成多步
  2. 其中每一步都对应任务
  • 将其中需要执行的部分发送给 Worker
  1. Worker 进行执行
  2. 最终两部分的结果一并发送给 Solver
  3. Solver 得到最终的结果

ReAct

ReAct
ReAct在拿到用户的输入后会选择相对应的工具
在拿到工具的结束条件后,会思考是否要选择下一个工具
直到达到结束条件,即:完成用户的输入为止
选择工具
输入
结束条件
执行工具
结束

ReAct 论文中的原图

在这里插入图片描述

图中可以看出,ReAct 结合了推理和行为两部分,更好的实现了智能体的思维模式。

Lagent & AgentLego

Lagent

一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。

支持多种智能体范式。(如 AutoGPTReWooReAct )

支持多种工具。(如谷歌搜索、 Python 、解释器等)

Lagent 基本流程

在这里插入图片描述

  • 大语言模型模块接受人类反馈、人类执行、外部观察等
  • 在做出规划和行动后交给 Action Executor 动作执行器
  • Action Executor 动作执行器包括各种动作
    • PythonExecutorPython 解释器
    • Search , 搜索

AgentLego

一个多模态工具包,旨在像乐高积木,可以快速简便地拓展自定义工具,从而组装出自己的智能体。

支持多个智能体框架。(如 LagentLangChainTransformers Agents

提供大量视觉、多模态领域前沿算法。

在这里插入图片描述

两者的关系

Lagent
AgentLego
处理
调用工具
工具输出
工具功能支持
输入
大语言模型
是否需要调用工具
一般输出
智能体输出

用户输入大语言模型时,大语言模型会根据自身判断是否需要调用工具
如果不需要调用工具,则直接进行输出;
如果需要调用工具,就会进入 Lagent 的相应逻辑中。

Lagent 首先调用工具,而工具去选择找到工具功能支持,一部分多模态工具的功能支持在 AgentLego 的算法库中有相应的实现,在得到工具输出后,模型再经过后处理,就变成了智能体输出

实战一: Lagent 轻量级智能体框架

Lagent 是什么

Lagent 是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型智能体。同时它也提供了一些典型工具以增强大语言模型的能力。

Lagent 目前已经支持了包括 AutoGPTReAct 等在内的多个经典智能体范式,也支持了如下工具:

  • Arxiv 搜索
  • Bing 地图
  • Google 学术搜索
  • Google 搜索
  • 交互式 IPython 解释器
  • IPython 解释器
  • PPT
  • Python 解释器

Lagent 自定义工具

使用 Lagent 自定义工具主要分为以下几步:

  • 继承 BaseAction
  • 实现简单工具的 run 方法;或者实现工具包内每个子工具的功能
  • 简单工具的 run 方法可选被 tool_api 装饰;工具包内每个子工具的功能都需要被 tool_api 装饰

实战二: AgentLego 组装智能体“乐高”

AgentLego 是什么

AgentLego 是一个提供了多种开源工具 API多模态工具包,旨在像是乐高积木一样,让用户可以快速简便地拓展自定义工具,从而组装出自己的智能体。通过 AgentLego 算法库,不仅可以直接使用多种工具,也可以利用这些工具,在相关智能体框架(如 LagentTransformers Agent 等)的帮助下,快速构建可以增强大语言模型能力的智能体

AgentLego 目前提供了如下工具:

  • 通用能力
    • 计算器
    • 谷歌搜素
  • 语音相关
    • 文本 -> 音频( TTS
    • 音频 -> 文本( STT
  • 图像处理
    • 描述输入图像
    • 识别文本( OCR
    • 视觉问答( VQA
    • 人体姿态估计
    • 人脸关键点检测
    • 图像边缘提取( Canny
    • 深度图生成
    • 生成涂鸦( Scribble
    • 检测全部目标
    • 检测给定目标
    • SAM
      • 分割一切
      • 分割给定目标
  • AIGC
    • 文生图
    • 图像拓展
    • 删除给定对象
    • 替换给定对象
    • 根据指令修改
    • ControlNet 系列
    • 根据边缘+描述生成
    • 根据深度图+描述生成
    • 根据姿态+描述生成
    • 根据涂鸦+描述生成
    • ImageBind 系列
    • 音频生成图像
    • 热成像生成图像
    • 音频+图像生成图像
    • 音频+文本生成图像

AgentLego 自定义工具

自定义工具主要分为以下几步:

  1. 继承 BaseTool
  2. 修改 default_desc 属性(工具功能描述)
  3. 如有需要,重载 setup 方法(重型模块延迟加载)
  4. 重载 apply 方法(工具功能实现)

其中第1、2、4步是必须的步骤。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建,欢迎商务合作。wx: diudiu5555

更多推荐