本次课程由樊奇主讲。
首先了解为什么要有智能体?
随着大语言模型的发展,我们逐渐发现即使是GPT-4这样的大语言模型,在某些场景下也不能满足实际需求,有着诸多的局限性如:产生幻觉(模型可能生成虚假信息,其内容与现实严重不符或脱节)、缺乏时效性(模型训练数据过时,无法反映最新的趋势和信息)、缺乏可靠性(面对复杂任务时,可能频发错误输出现象,影响信任度)。因此,基于大语言模型的智能体应运而生。
什么是智能体?
一个智能体应满足以下三个条件:可以感知环境中的动态条件,能采取动作影响环境,能运用推理能力理解信息、解决问题、产生推断、决定动作。
智能体的组成:
大脑(作为控制器,承担记忆、思考和决策任务。接受来自感知模块的信息,并采取相应动作。)、感知(对外部环境的多模态信息进行感知处理。包括但不限于图像、音频、视频、传感器等。)、动作(利用并执行工具以影响环境。工具可能包括文本的检索、调用相关API、操作机械臂等。)
智能体的范式:
经典的智能体范式包括AutoGPT、ReWoo和ReAct。
AutoGPT的流程:
用户将目标和任务输入给整个系统后,任务的列表将会将任务发送给相对应的智能体,智能体在执行后,会将相关的结果以及任务存入到存记忆当中,并且把相关的结果发送给另外一个智能体,由这个智能体再创建出新的任务,由此循环直至最终完成任务。
ReWoo的流程:
ReWoo将用户的输入做拆分,将各种工具之间的依赖形成一个有向无环图,并且在图中进行计划执行,直到达到最终的结果。由来自ReWoo论文中的图可以了解到:Planner作为一个决策,它将输入拆分成了多步,其中的每一步都对应着相应的任务,然后将其中需要执行的部分发送给Worker进行执行,最终两部分的结果一并发送给Solver得到最终的结果。
ReAct的流程:
接收用户输入后,会选择相对应的工具进行执行,在拿到工具的结束条件后,模型会进一步思考它是否应该选择下一个工具并执行,直到达到结束条件及完成用户的输入为止。由来自ReAct论文中的图可以了解到:ReAct结合了推理与行为两部分,更好地实现了智能体的思维模式。
关于Lagent和AgentLego:
Lagent是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。它支持多种智能体范式,如上述提到的AutoGPT、ReAct、ReWoo等。它也支持谷歌搜索、Python解释器等多种工具。Lagent的基本流程图如下,可以了解到它的大语言模型板块可以接收到来自人类的反馈、人类指令以及外部观察等,会在做出相应的规划和行动后交付到动作执行器中。而动作执行器包括各种动作,如Python的解释器和搜索等等。
AgentLego是一个多模态的工具包,旨在像乐高积木那样,可以快速简便地拓展自定义工具,从而组装出自己的智能体。它支持Lagent、LangChain、Transformers Agents等多个智能体框架。提供大量视觉、多模态领域前沿算法。
Lagent和AgentLego的关系:
用户将输入内容输入到大语言模型时,大语言模型会根据自身进行判断其是否需要调动工具。如果不需要调动工具则直接进行输出。如果需要调动工具则会进入Lagent的相应逻辑当中,它首先会调用工具,而工具会选择去找到工具的那些功能支持,而一部分的多模态的相关工具的功能支持就在AgentLego算法库中有相应的实现。在得到工具的输出后,模型再经过后处理就变成了智能体的输出。
实战前环境配置
配置conda环境
初始化成功结果如下图所示:
安装 Lagent 和 AgentLego
安装其他依赖
准备Tutorial
实战一:Lagent轻量级智能体框架
-
Lagent Web Demo
1.1使用 LMDeploy 部署
1.2 启动并使用 Lagent Web Demo
端口映射
接下来在本地的浏览器页面中打开 http://localhost:7860 以使用 Lagent Web Demo。
2. 用 Lagent 自定义工具
2.1 创建工具文件
2.2 获取 API KEY
2.3 体验自定义工具效果
端口映射
在输入模型地址并选择好工具后,就可以开始体验了。这里因为我喜欢南京,所以我们就以南京的天气查询为例啦!可以看到成功查询了南京的天气!
实战二:AgentLego组装智能体“乐高”
1. 直接使用 AgentLego
原图与结果对比展示如下
2 作为智能体工具使用
2.1 修改相关文件
2.2 使用 LMDeploy 部署
2.3 启动 AgentLego WebUI
2.4 使用 AgentLego WebUI
3. 用 AgentLego 自定义工具
3.1 创建工具文件
3.2 注册新工具
3.3 体验自定义工具效果
本节课的记录以及实现的回顾均告一段落。