分享好友 最新动态首页 最新动态分类 切换频道
第六课 Lagent & AgentLego 智能体应用搭建 学习笔记及作业
2024-12-25 12:46

1.1 为什么要有智能体

大语言模型毕竟是一个基于一定算法与机器运行基础的模型,存在一定局限性,比如会有幻觉:出现虚假信息。有时效性限制:数据过时时无法反应最新趋势和信息。可靠性得不到保障:在面对复杂任务时,可能频发错误输出现象,影响信任度。这就使得智能体应运而生。

第六课 Lagent & AgentLego 智能体应用搭建 学习笔记及作业

1.2 智能体简介

智能体三要素:感知环境中的动态条件;采取动作影响环境;运用推理能力理解信息、解决问题、产生推断、决定动作。
智能体包括
大脑:记忆、思考和决策任务。接受来自感知模块的信息,采取相应的动作。
感知:对外部环境的多模态信息进行感知和处理。
动作:利用并执行工具以影响环境。

1.3 智能体范式

1.4 智能体范式

2.1 环境配置

2.1.1 创建开发机和 conda 环境

在创建开发机界面选择镜像为 Cuda12.2-conda,并选择 GPU 为30% A100。这里前面几节课已经做过介绍,这里不再赘述。
进入开发机后,为了方便使用,我们需要配置一个环境以同时满足 Lagent 和 AgentLego 运行时所需依赖。在开始配置环境前,我们先创建一个用于存放 Agent 相关文件的目录,可以执行如下命令

 

输入如下指令配置 conda 环境

 
 
2.1.2 安装 Lagent 和 AgentLego

安装 Lagent 和 AgentLego,可以使用pip安装。这里为了方便使用 Lagent 的 Web Demo 以及 AgentLego 的 WebUI,选择直接从源码进行安装。
执行如下命令进行安装

 
 
2.1.3 涉及到轻量化的部署应用,安装lmdeploy

执行如下命令安装lmdeploy

 
 
2.1.4 准备 Tutorial

由于后续的 Demo 需要用到 tutorial 已经写好的脚本,因此我们需要将 tutorial 通过 git clone 的方法准备好,以备后续使用

 
 

2.2 Lagent:轻量级智能体框架实践

2.2.1. Lagent Web Demo
2.2.1.1 使用 LMDeploy 部署

在 vscode terminal 中执行如下代码使用 LMDeploy 启动一个 api_server。

 
 
2.2.1.2 启动并使用 Lagent Web Demo

按照下图指示新建一个 terminal 以启动 Lagent Web Demo。在新建的 terminal 中执行如下指令

 
 
 
 
2.2.2. 用 Lagent 自定义工具

Lagent 中关于工具部分的介绍文档位于 https://lagent.readthedocs.io/zh-cn/latest/tutorials/action.html 。使用 Lagent 自定义工具主要分为以下几步
1、继承 BaseAction 类
2、实现简单工具的 run 方法;或者实现工具包内每个子工具的功能
3、简单工具的 run 方法可选被 tool_api 装饰;工具包内每个子工具的功能都需要被 tool_api 装饰
下面我们将实现一个调用和风天气 API 的工具以完成实时天气查询的功能。

2.2.2.1 创建工具文件
 
2.2.2.2 获取 API KEY
2.2.2.3 体验自定义工具效果

在两个 terminal 中分别启动 LMDeploy 服务和 Tutorial 已经写好的用于这部分的 Web Demo(注意要关闭之前已经启动的 LMDeploy 和Web Demo 服务

 
 
 
 
 
 
 

2.3.1 直接使用 AgentLego

首先下载 demo 文件

 
 
 
 

使用 新建一个direct_use.py 以直接使用目标检测工具,代码如下

 
 

2.3.2 作为智能体工具使用

2.3.2.1 修改相关文件

由于 AgentLego 算法库默认使用 InternLM2-Chat-20B 模型,因此我们首先需要修改 /root/agent/agentlego/webui/modules/agents/lagent_agent.py 文件的第 105行位置,将 internlm2-chat-20b 修改为 internlm2-chat-7b,即

 
 
2.3.2.2 使用 LMDeploy 部署

使用 LMDeploy 部署
由于 AgentLego 的 WebUI 需要用到 LMDeploy 所启动的 api_server,因此我们首先按照下图指示在 vscode terminal 中执行如下代码使用 LMDeploy 启动一个 api_server。

 
 
2.3.2.3 启动 AgentLego WebUI

接下来我们按照下图指示新建一个 terminal 以启动 AgentLego WebUI。在新建的 terminal 中执行如下指令

 
 

根据报错,将所需要的库进行修正。执行如下代码

 
 

在本地进行端口映射,打开本地PowerShell,输入如下代码和开发机SSH密码即可

 
2.3.2.4 使用 AgentLego WebUI

2.3.3 用 AgentLego 自定义工具

我们将基于 AgentLego 构建自己的自定义工具。AgentLego 在这方面提供了较为详尽的文档,文档地址为 https://agentlego.readthedocs.io/zh-cn/latest/modules/tool.html 。自定义工具主要分为以下几步
1、继承 BaseTool 类
2、修改 default_desc 属性(工具功能描述
3、如有需要,重载 setup 方法(重型模块延迟加载
4、重载 apply 方法(工具功能实现
其中第一二四步是必须的步骤。下面我们将实现一个调用 MagicMaker 的 API 以实现图像生成的工具。
MagicMaker 是汇聚了优秀 AI 算法成果的免费 AI 视觉素材生成与创作平台。主要提供图像生成、图像编辑和视频生成三大核心功能,全面满足用户在各种应用场景下的视觉素材创作需求。体验更多功能可以访问 https://magicmaker.openxlab.org.cn/home 。
其中第一二四步是必须的步骤。下面我们将实现一个调用 MagicMaker 的 API 以实现图像生成的工具。

2.3.3.1 创建工具文件

首先通过 (大小写敏感)的方法新建工具文件。该文件的内容如下

 
2.3.3.2 注册新工具

接下来修改 /root/agent/agentlego/agentlego/tools/init.py 文件,将我们的工具注册在工具列表中。如下所示,我们将 MagicMakerImageGeneration 通过 from .magicmaker_image_generation import MagicMakerImageGeneration 导入到了文件中,并且将其加入了 all 列表中。修改后的代码如下,直接全部复制黏贴进去保存即可。

 
3.3.3.3 体验自定义工具效果

与2.3.2.2,2.3.2.3,2.3.2.4类似,我们在两个 terminal 中分别启动 LMDeploy 服务和 AgentLego 的 WebUI 以体验我们自定义的工具的效果。

 
 
 

在本地执行如下操作以进行端口映射

 
 
 
 
 
 

2.4.1. OpenAI Function Calling

2.4.1.1介绍

其中,我们将对话数据和工具描述传递给 API 模型。在得到 API 模型的输出后,我们在本地根据输出调用函数,最终得到结果。

2.4.1.2 数据格式

本节介绍 OpenAI Function Calling 所规定的数据格式,以便于使用 XTuner 进行微调时理解数据的结构。
1、对话部分

 

如上,这是一个简单的对话数据,包含 role 和 content 两个字段,分别表示输入角色和输入内容。
2、工具描述部分

 

如上所示是 OpenAI Function Calling 的工具描述部分。各字段描述如下

2.4.2. 基于 XTuner 的 Agent 工具能力微调

emmmmm,这节待官方更新,后续有了再补充。

3.1 基础作业

完成 Lagent Web Demo 使用,并在作业中上传截图。文档可见 Lagent Web Demo

本部分作业及截图见2.1以及2.2.1节。

完成 AgentLego 直接使用部分,并在作业中上传截图。文档可见 直接使用 AgentLego。

本部分作业及截图见2.1以及2.3.1节。

3.2 进阶作业

完成 AgentLego WebUI 使用,并在作业中上传截图。

本部分作业及截图见2.1以及2.3.2节。

使用 Lagent 或 AgentLego 实现自定义工具并完成调用,并在作业中上传截图。

本部分作业及截图见2.1以及2.2.2;2.3.3节。

3.3 大作业选题(待后续更新

3.3.1 算法方向(待后续更新

在 Lagent 或 AgentLego 中实现 RAG 工具,实现智能体与知识库的交互。
基于 Lagent 或 AgentLego 实现工具的多轮调用,完成复杂任务。如:智能体调用翻译工具,再调用搜索工具,最后调用生成工具,完成一个完整的任务。

3.3.2 应用方向(待后续更新
最新文章
如何优化网站排名,提升搜索引擎排名(建立优化战略)
如何让自己的网站排名靠前成为了许多网站拥有者需要解决的问题,在当今信息爆炸的时代。让更多人发现你的网站,优化关键词排名可以帮助你的网站获取更多的流量。但是如何才能实现这一目标呢?调整网站结构、本文将从建立关键词优化战略、提
网站平面设计,打造视觉盛宴,提升用户体验
随着互联网的快速发展,已经成为企业、个人展示形象、传播信息的重要平台。一个优秀的网站不仅需要具备良好的功能性和实用性,更要在视觉上给带来愉悦的体验。本文将围绕网站平面设计展开,探讨其重要性、设计原则以及如何提升用户体验。一
2024年第一季度全球PC市场实现增长,AI PC贡献显著
根据市调机构CounterPoint的最新报告,2024年第一季度全球PC市场结束了连续八个季度的下滑趋势,同比增长约3%。这一增长主要得益于AI PC的兴起和带动,据悉,45%的新笔记本都是AI PC。品牌方面,联想继续稳居第一,季度出货量达到1370万台
51 SEO秘籍,深度解析网站流量与排名提升策略
51 SEO是一种高效SEO策略,通过优化关键词、内容、技术等方面,帮助网站提升搜索引擎排名和流量。通过精准关键词研究、高质量内容创作、用户体验优化等技术手段,51 SEO助力企业快速提高在线可见度,吸引更多潜在客户。随着互联网的快速发
SEO入门到精通的10个技巧大揭秘
seo入门事实上,SEO入门到精通自己只需要10个步骤,大家可以参考分析一下。1、作为SEO新手,需要了解网站建设,哪怕你不会写代码,但是你要了解网站的建站和基础html代码,这是做好SEO的第一步。简单的网站优化只需要利用网站的源码设置和
福田SEO整站优化,助力企业在线腾飞,抢占市场风口
福田SEO整站优化企业,专注于为企业提供全方位在线竞争力提升服务,助力客户抢占市场先机,实现网络营销目标。随着互联网的飞速发展,越来越多的企业开始意识到网络营销的重要性,而SEO(搜索引擎优化)作为网络营销的重要组成部分,已经成
信息流广告优化师福利:节日文案撰写,看这一篇就够了
刚刚把8月份的数据报告整理完毕,好在目标已完成,原以为月初可以松口气。打开日历才发现,还有6天就是教师节,还有9天就是中秋节,领导下达的新目标新任务随之而来。纳尼!这个月的目标任务是上个月的3倍?上个月若不是爆发了洪荒之力,不可
什么是seo专业b2b
什么是seo专业b2b什么是什么是seo专业b2b6、建立网站地图SiteMap据自己的网站结构,可以制作网站地图,让站长们的网站对搜索引擎极其友好化。让搜索引擎能过SiteMap就这个可以ftp访问整个站点上的绝大部分网页和栏目。最好有两套siteMap,一
Windows端 EMBY 调用本地播放器
问:为什么需要本地播放器?答:因为EMBY自带播放功能一般。ASS支持不佳,字幕/视频渲染效果不佳,自定义能力基本为0。Win端太多优秀的本地播放器方案,pot,mpc,mpv.....问:有没有方法可以让EMBY直接调用本地播放器?答:有。例如 embyTo
74LS系列芯片全面技术指南与应用实例
简介:74LS系列芯片是一类广泛应用于数字电子技术领域的低功耗肖特基TTL逻辑系列集成电路。该系列芯片因其低功耗、高速度和良好兼容性,在电子设备中扮演了重要角色,包括逻辑门电路、数据手册、应用示例、接口技术、故
相关文章
推荐文章
发表评论
0评