
《书生·浦语大模型实战营》第六节课《Lagent & AgentLego 智能体应用搭建》课程笔记
2024年3月开始参加《书生·浦语大模型实战营》第一节课《书生·浦语大模型全链路开源体系》第二节课《轻松玩转书生·浦语大模型趣味 Demo》第三节课《茴香豆:搭建你的 RAG 智能助理》第四节课《XTuner 微调 LLM:1.8B、多模态、Agent》第五节课《LMDeploy 量化部署 LLM 实践》这是第六节课《Lagent & AgentLego 智能体应用搭建》课程笔记`Lagent`
《书生·浦语大模型实战营》第六节课《Lagent & AgentLego 智能体应用搭建》课程笔记
本次学习
2024年3月开始参加《书生·浦语大模型实战营》
https://openxlab.org.cn/models/InternLM/subject
相关链接
- https://github.com/InternLM/InternLM
- https://huggingface.co/internlm
- https://modelscope.cn/organization/Shanghai_AI_Laboratory
- https://openxlab.org.cn/models/InternLM
第一节课《书生·浦语大模型全链路开源体系》课程及 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-Roth于 1995
年发表论文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
AutoGPT
基本流程
- 用户将目标和任务输入给整个系统
- 任务列表把任务发给对应的智能体
- 智能体完成后将相关的任务和结果保存在记忆中
- 把结果发送给另外一个智能体
- 这个智能体创建新任务
由此循环直到最终完成任务。
ReWoo
ReWoo
将用户的输入做拆分- 将各种工具之间的依赖形成一个有向无环图
- 在图中进行计划执行
- 直到达到最终结果
ReWoo
论文中的图
Planner
将输入拆分成多步- 其中每一步都对应任务
- 将其中需要执行的部分发送给
Worker
Worker
进行执行- 最终两部分的结果一并发送给
Solver
Solver
得到最终的结果
ReAct
ReAct
论文中的原图
图中可以看出,ReAct
结合了推理和行为两部分,更好的实现了智能体的思维模式。
Lagent
& AgentLego
Lagent
一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。
支持多种智能体范式。(如
AutoGPT
、ReWoo
、ReAct
)支持多种工具。(如谷歌搜索、
Python
、解释器等)
Lagent
基本流程
- 大语言模型模块接受人类反馈、人类执行、外部观察等
- 在做出规划和行动后交给
Action Executor
动作执行器 Action Executor
动作执行器包括各种动作PythonExecutor
,Python
解释器Search
, 搜索
AgentLego
一个多模态工具包,旨在像乐高积木,可以快速简便地拓展自定义工具,从而组装出自己的智能体。
支持多个智能体框架。(如
Lagent
、LangChain
、Transformers Agents
)提供大量视觉、多模态领域前沿算法。
两者的关系
用户输入到大语言模型时,大语言模型会根据自身判断是否需要调用工具;
如果不需要调用工具,则直接进行输出;
如果需要调用工具,就会进入 Lagent
的相应逻辑中。
Lagent
首先调用工具,而工具去选择找到工具功能支持,一部分多模态工具的功能支持在 AgentLego
的算法库中有相应的实现,在得到工具输出后,模型再经过后处理,就变成了智能体输出。
实战一: Lagent
轻量级智能体框架
Lagent
是什么
Lagent
是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。
Lagent
目前已经支持了包括 AutoGPT
、 ReAct
等在内的多个经典智能体范式,也支持了如下工具:
Arxiv
搜索Bing
地图Google
学术搜索Google
搜索- 交互式
IPython
解释器 IPython
解释器PPT
Python
解释器
用 Lagent
自定义工具
使用 Lagent
自定义工具主要分为以下几步:
- 继承
BaseAction
类 - 实现简单工具的
run
方法;或者实现工具包内每个子工具的功能 - 简单工具的
run
方法可选被tool_api
装饰;工具包内每个子工具的功能都需要被tool_api
装饰
实战二: AgentLego
组装智能体“乐高”
AgentLego
是什么
AgentLego
是一个提供了多种开源工具 API
的多模态工具包,旨在像是乐高积木一样,让用户可以快速简便地拓展自定义工具,从而组装出自己的智能体。通过 AgentLego
算法库,不仅可以直接使用多种工具,也可以利用这些工具,在相关智能体框架(如 Lagent
, Transformers Agent
等)的帮助下,快速构建可以增强大语言模型能力的智能体。
AgentLego
目前提供了如下工具:
- 通用能力
- 计算器
- 谷歌搜素
- 语音相关
- 文本 -> 音频(
TTS
) - 音频 -> 文本(
STT
)
- 文本 -> 音频(
- 图像处理
- 描述输入图像
- 识别文本(
OCR
) - 视觉问答(
VQA
) - 人体姿态估计
- 人脸关键点检测
- 图像边缘提取(
Canny
) - 深度图生成
- 生成涂鸦(
Scribble
) - 检测全部目标
- 检测给定目标
SAM
- 分割一切
- 分割给定目标
AIGC
- 文生图
- 图像拓展
- 删除给定对象
- 替换给定对象
- 根据指令修改
ControlNet
系列- 根据边缘+描述生成
- 根据深度图+描述生成
- 根据姿态+描述生成
- 根据涂鸦+描述生成
ImageBind
系列- 音频生成图像
- 热成像生成图像
- 音频+图像生成图像
- 音频+文本生成图像
用 AgentLego
自定义工具
自定义工具主要分为以下几步:
- 继承
BaseTool
类 - 修改
default_desc
属性(工具功能描述) - 如有需要,重载
setup
方法(重型模块延迟加载) - 重载
apply
方法(工具功能实现)
其中第1、2、4步是必须的步骤。
更多推荐
所有评论(0)