Lagent & AgentLego 智能体应用搭建_哔哩哔哩_bilibili
目录
概念
为什么要用智能体?智能体能通过工具调用增强LLM的能力,吴恩达就很看好智能体
智能体的三个特点:感知环境,采取动作影响环境,运用推理能力理解信息 解决问题 推断 执行动作
智能体组成
大脑:控制器,记忆 思考 决策
感知:感知环境的各种信息
动作:执行工具
智能体范式
流行的agent 如,autoGPT, ReWoo, ReAct
AutoGPT
用户输入任务,将任务发送给对应的agent,执行后将任务和结果存入记忆,发送给另一个agent用于创建新的子任务,如此循环直到任务完成
ReWoo
拆分用户输入分成子任务,各种工具之间的依赖形成DAG图,按计划执行直到任务完成
ReAct
接收用户输入后,选择工具并执行,然后思考是否需要继续选择下一个工具,直到任务完成
Lagent & AgentLego
Lagent
一个轻量级agent框架,高效构建LLM智能体,支持多种智能体范式(autogpu,react)和工具(搜索,python解释器)
AgentLego
多模态工具箱,简单组装自己的智能体,支持多个框架(Lagent, LangChain),提供大量前沿算法
如果LLM决定需要调用工具,进入Lagent逻辑,调用工具,有的多模态工具可以由AgentLego工具箱提供,最后得到工具的输出
实践
Lagent Web Demo
先启动模型:
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 web demo,在仓库代码的这个路径下 lagent/examples
streamlit run internlm2_agent_web_demo.py --server.address 0.0.0.0 --server.port 7860
AgentLego
AgentLego 算法库既可以直接使用,也可以作为智能体工具使用
直接作为算法库使用 AgentLego
直接使用时 agentlego就相当于一个算法库 或者 工具箱
下载 demo 文件: wget http://download.openmmlab.com/agentlego/road.jpg
pip install openmim==0.3.9 mim install mmdet==3.3.0
写个脚本 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)
还要先下载模型:
模型下载好就有输出了:
作为智能体能调用的工具给LLM使用
还是上面一样的LLM模型:
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
先在这里改下模型名字 agentlego/webui/modules/agents/lagent_agent.py
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
在这个目录下:agentlego/webui,执行 python one_click.py
进入web页面先设置一下 Agent:
再设置一下 tools:
设置完 就可以chat 了
上传图片后,说检测图片中的物体:
agentlego 感觉不错,赞