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 与大模型智能体并不直接相关,而是作为工具包,在相关智能体的功能支持模块发挥作用。
两者之间的关系可以用下图来表示:
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 自定义工具主要分为以下几步:
- 继承 BaseAction 类;
- 实现简单工具的 run 方法;或者实现工具包内每个子工具的功能;
- 简单工具的 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 。自定义工具主要分为以下几步:
- 继承 BaseTool 类
- 修改 default_desc 属性(工具功能描述)
- 如有需要,重载 setup 方法(重型模块延迟加载)
- 重载 apply 方法(工具功能实现)
示例调用MagicMaker的 API 以实现图像生成的工具。
4. 参考资料
- https://github.com/InternLM/Tutorial/blob/camp2/agent/README.md