书生浦语之:Lagent & AgentLego 智能体应用搭建(三)

1、直接使用AgentLego

前置环境的配置已经在前面两篇文章中有说明,本章直接忽略这部分的操作,直接使用AgentLego。

1.1 demo文件下载

cd /root/agent
wget http://download.openmmlab.com/agentlego/road.jpg

由于 AgentLego 在安装时并不会安装某个特定工具的依赖,因此我们接下来准备安装目标检测工具运行时所需的依赖。

conda activate agent
pip install openmim==0.3.9
mim install mmdet==3.3.0

 AgentLego所实现的目标检测工具是基于mmdet (MMDetection)算法库中的RTMDet-Large模型,因此我们首先安装mim,然后通过mim工具来安装mmdet。这一步所需时间可能会消耗,请耐心等待。

1.2 创建目标检测工具

 在 /root/agent 目录下新建 direct_use.py 以直接使用目标检测工具,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)

此时文件树结构如下:

/root/agent
├── agentlego
│   ├── agentlego
│   ├── docs
│   ├── examples
│   ├── LICENSE
│   └── ...
├── lagent
│   ├── docs
│   ├── examples
│   ├── lagent
│   ├── LICENSE
│   └── ...
├── Tutorial
│   ├── assets
│   ├── agent
│   ├── helloword
│   ├── huixiangdou
│   └── ...
├── direct_use.py
└── road.jpg

1.3 推理

接下来在执行以进行推理:

python /root/agent/direct_use.py

在等待 RTMDet-Large 权重下载并完成推理后,我们就可以看到如下输出以及一张位于 /root/agent 名为 road_detection_direct.jpg 的图片: 

truck (345, 428, 528, 599), score 83
car (771, 510, 837, 565), score 81
car (604, 518, 677, 569), score 75
person (866, 503, 905, 595), score 74
person (287, 513, 320, 596), score 74
person (964, 502, 999, 604), score 72
person (1009, 503, 1047, 602), score 69
person (259, 510, 279, 575), score 65
car (1074, 524, 1275, 691), score 64
person (993, 508, 1016, 597), score 62
truck (689, 483, 764, 561), score 62
bicycle (873, 551, 903, 602), score 60
person (680, 523, 699, 567), score 55
bicycle (968, 551, 996, 609), score 53
bus (826, 482, 930, 560), score 52
bicycle (1011, 551, 1043, 617), score 51

 

 2、作为智能体工具的使用

2.1 修改相关文件

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

def llm_internlm2_lmdeploy(cfg):
    url = cfg['url'].strip()
    llm = LMDeployClient(
-         model_name='internlm2-chat-20b',
+         model_name='internlm2-chat-7b',
        url=url,
        meta_template=INTERNLM2_META,
        top_p=0.8,
        top_k=100,
        temperature=cfg.get('temperature', 0.7),
        repetition_penalty=1.0,
        stop_words=['<|im_end|>'])
    return llm

其中‘-’表示要删除的内容,‘+’表示要添加的内容。

2.2 使用LMDeploy部署

由于 AgentLego 的 WebUI 需要启用 LMDeploy 所启动的 api_server,我们首先按照下图指示在 vscode 终端中执行如下代码使用 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

 2.3 启动 AgentLego WebUI

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

conda activate agent
cd /root/agent/agentlego/webui
python one_click.py

在等待 LMDeploy 的 api_server 与 AgentLego WebUI 完全启动后(如下图所示),在本地进行端口映射,将 LMDeploy api_server 的 23333 端口以及 AgentLego WebUI 的 7860 端口映射到本地。可以执行:

ssh -CNg -L 7860:127.0.0.1:7860 -L 23333:127.0.0.1:23333 root@ssh.intern-ai.org.cn -p 你的 ssh 端口号

2.4 使用 AgentLego WebUI 

接下来在本地的浏览器页面中打开http://localhost:7860来使用AgentLego WebUI。首先来配置​​Agent,如下图所示。

  1. 点击上方Agent进入Agent配置页面。(如①所示)
  2. 点击Agent下方框,选择New Agent。(如②所示)
  3. 选择Agent Class为lagent.InternLM2Agent。(如③所示)
  4. 输入模型URL为http://127.0.0.1:23333。(如④所示)
  5. 输入代理名称,自定义即可,输入了internlm2。(如⑤所示)
  6. 点击save到以保存配置,这样在接下来使用时只需在第2步时选择Agent 为 internlm2 后点击load以加载就可以了。(如⑥所示)
  7. 点击加载加载配置。(如⑦所示)

然后配置工具,如下图所示。

  1. 点击上方工具页面进入工具配置页面。(如①所示)
  2. 点击Tools下方框,选择New Tool以加载新工具。(如②所示)
  3. 选择Tool Class为ObjectDetection。(如③所示)
  4. 点击保存以保存配置。(如④所示)

 等待工具加载完成后,点击上方聊天即可进入对话页面。在页面下方选择工具部分只选择ObjectDetection工具,如下图所示。为确保调用工具的成功率,请在使用时确保此工具启用。

接下来就可以愉快地使用代理了。点击右下角文件夹以上传图片,上传图片后输入指令并点击生成得到模型回复。如下图所示,我们上传了演示图片,模型成功地调用了工具,并详细地告诉了我们所讲的内容。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值