一、Lagent & AgentLego智能体简介:
抛出问题:为什么要有智能体?为了解决大模型的一些痛点问题
什么是智能体:
智能体的组成和经典智能体范式:
Lagent简介:
AgentLego简介:
两者关系:
二、项目实践:
环境配置:
创建开发机:选择镜像为 Cuda12.2-conda,并选择 GPU 为30% A100
进入开发机后,配置一个环境以同时满足 Lagent 和 AgentLego 运行时所需依赖。这里我们使用开发机的Terminal
在开始配置环境前,先创建一个用于存放 Agent 相关文件的目录:
mkdir -p /root/agent
配置conda环境:
studio-conda -t agent -o pytorch-2.1.2
安装 Lagent 和 AgentLego:
官方解释:Lagent 和 AgentLego 都提供了两种安装方法,一种是通过 pip 直接进行安装,另一种则是从源码进行安装。为了方便使用 Lagent 的 Web Demo 以及 AgentLego 的 WebUI,我们选择直接从源码进行安装。 此处附上源码安装的相关帮助文档:
- Lagent:安装方式 — Lagent
- AgentLego:安装 — AgentLego 0.2.0 文档
安装命令:
cd /root/agent
conda activate agent
git clone https://gitee.com/internlm/lagent.git
cd lagent && git checkout 581d9fb && pip install -e . && cd ..
git clone https://gitee.com/internlm/agentlego.git
cd agentlego && git checkout 7769e0d && pip install -e . && cd ..
GPT总结命令:
命令执行结果:
安装其他依赖:会用到lmdeploy
conda activate agent
pip install lmdeploy==0.3.0
准备 Tutorial:后续的 Demo 需要用到 tutorial 已经写好的脚本
cd /root/agent
git clone -b camp2 https://gitee.com/internlm/Tutorial.git
GPT命令解释:
(一)Lagent Web Demo:
使用 LMDeploy 部署:
Lagent 的 Web Demo 需要用到 LMDeploy 所启动的 api_server,之后会在 vscode terminal 中执行如下代码使用 LMDeploy 启动一个 api_server。
conda activate agent
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
启动并使用 Lagent Web Demo:
按图中步骤,新建一个 terminal 以启动 Lagent Web Demo:
conda activate agent
cd /root/agent/lagent/examples
streamlit run internlm2_agent_web_demo.py --server.address 127.0.0.1 --server.port 7860
在LMDeploy 的 api_server 与 Lagent Web Demo 完全启动好后,在本地进行端口映射,将 LMDeploy api_server 的23333端口以及 Lagent Web Demo 的7860端口映射到本地。
Win+X选择以管理员方式打开PowerShell,执行命令:
ssh -CNg -L 7860:127.0.0.1:7860 -L 23333:127.0.0.1:23333 root@ssh.intern-ai.org.cn -p 你的 ssh 端口号
ssh端口号获得方式:
之后要求输入密码进行连接。
接下来在本地的浏览器页面中打开 http://localhost:7860 以使用 Lagent Web Demo。首先输入模型 IP 为 127.0.0.1:23333,在输入完成后按下回车键以确认。并选择插件为 ArxivSearch,以让模型获得在 arxiv 上搜索论文的能力。然后以输入“请帮我搜索 InternLM2 Technical Report” 以让模型搜索书生·浦语2的技术报告。效果如下图所示:可以看到模型正确输出了 InternLM2 技术报告的相关信息
至于最下面一些不相关答案,官方解释是:“尽管还输出了其他论文,但这是由 arxiv 搜索 API 的相关行为导致的”
至此,demo跑通完成。
(二)直接使用 AgentLego:
下载Demo文件:
cd /root/agent
wget http://download.openmmlab.com/agentlego/road.jpg
先准备安装目标检测工具运行时所需依赖:
AgentLego 所实现的目标检测工具是基于 mmdet (MMDetection) 算法库中的 RTMDet-Large 模型,首先安装 mim,然后通过 mim 工具来安装 mmdet:
conda activate agent
pip install openmim==0.3.9
mim install mmdet==3.3.0
使用touch命令在/root/agent/创建一个命名为direct_use.py的空文件脚本:
touch /root/agent/direct_use.py
填入代码:
import re
import cv2
from agentlego.apis import load_tool
# load tool
tool = load_tool('ObjectDetection', device='cuda')
# apply tool
visualization = tool('/root/agent/road.jpg')
print(visualization)
# visualize
image = cv2.imread('/root/agent/road.jpg')
preds = visualization.split('\n')
pattern = r'(\w+) \((\d+), (\d+), (\d+), (\d+)\), score (\d+)'
for pred in preds:
name, x1, y1, x2, y2, score = re.match(pattern, pred).groups()
x1, y1, x2, y2, score = int(x1), int(y1), int(x2), int(y2), int(score)
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 1)
cv2.putText(image, f'{name} {score}', (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 1)
cv2.imwrite('/root/agent/road_detection_direct.jpg', image)
运行文件脚本进行推理,等待 RTMDet-Large 权重下载并推理完成后,就可以看到如下输出以及一张位于 /root/agent 名为 road_detection_direct.jpg 的图片
python /root/agent/direct_use.py
至此Demo跑通完成。