【InternLM】Lagent智能体应用搭建

1. Lagent和AgentLego

1.1 Lagent

Lagent 是一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。Lagent 框架图如下:
在这里插入图片描述
Lagent 包含三个主要模块:agents,llms 和 actions。

agents 实现了多种智能体,如 ReAct,AutoGPT。

llms 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InterLM)及 GPT3.5/4 等闭源模型。

actions 包含一系列工具,并提供工具执行器来统一管理。

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

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

1.2 AgentLego

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

AgentLego 目前提供了如下工具:
在这里插入图片描述

1.3 Lagent和AgentLego的关系

综上,Lagent 是一个智能体框架,而 AgentLego 与大模型智能体并不直接相关,而是作为工具包,在相关智能体的功能支持模块发挥作用。

两者之间的关系可以用下图来表示:

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

2. 实践

2.1 使用 LMDeploy 部署Lagent Web Demo

参照官方示例进行实践:

执行如下代码使用 LMDeploy 启动一个 api_server:

lmdeploy serve api_server /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b \
                            --server-name 127.0.0.1 \
                            --model-name internlm2-chat-7b \
                            --cache-max-entry-count 0.1

基于streamlit启动Lagent Web Demo:

cd /root/agent/lagent/examples
streamlit run internlm2_agent_web_demo.py --server.address 127.0.0.1 --server.port 7860

启用ArxivSearch插件,搜索:请帮我搜索关于大模型agent的高引用论文,返回界面截图如下:
在这里插入图片描述

2.2 用 Lagent 自定义工具

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

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

参照官方示例进行部署,实现一个调用和风天气 API 的工具以完成实时天气查询的功能。

问题1:请帮我查询今天上海的天气
在这里插入图片描述
问题2:请帮我查询4月23日到4月25日上海的天气情况
API似乎不支持这种天气范围的查询
在这里插入图片描述

2.3 直接使用 AgentLego

参照官方文档进行实践,其背后采用mmdet (MMDetection) 算法库中的 RTMDet-Large 模型进行目标检测。

试验结果如下图,可见整体还是比较准确的。

在这里插入图片描述

2. 4 用 AgentLego 自定义工具

AgentLego 在这方面提供了较为详尽的文档,文档地址为 https://agentlego.readthedocs.io/zh-cn/latest/modules/tool.html 。自定义工具主要分为以下几步:

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

示例调用MagicMaker的 API 以实现图像生成的工具。
在这里插入图片描述

4. 参考资料

  1. https://github.com/InternLM/Tutorial/blob/camp2/agent/README.md
  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值