Lagent:从零搭建Multi-Agent 笔记

1. 环境配置

# 创建环境
conda create -n lagent python=3.10 -y
# 激活环境
conda activate lagent
# 安装 torch
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖包
pip install termcolor==2.4.0
pip install streamlit==1.39.0
pip install class_registry==2.1.2
pip install datasets==3.1.0

2. 从GitHub上克隆指定的仓库github.com/InternLM/lagent.git

# 创建目录以存放代码
mkdir -p /root/agent_camp4
cd /root/agent_camp4
git clone https://github.com/InternLM/lagent.git
cd lagent && git checkout e304e5d && pip install -e . && cd ..
pip install griffe==0.48.0

3. 创建agent_api_web_demo.py,在里面实现Web Demo

conda activate lagent
cd /root/agent_camp4/lagent/examples
touch agent_api_web_demo.py

4. 调用Arxiv文献检索工具 并运行 streamlit run agent_api_web_demo.py 

(运行前可以通过bash命令 export token='your_token_here')

打开url 后,可以看到左侧可选ArxivSearch插件,点击选中后,对比打开插件(第一条回答和第二条回答的差别)

5. 制作一个属于自己的Agent

5.1 在和风天气注册并获取api key

5.2 创建一个天气查询的工具程序

conda activate lagent
cd /root/agent_camp4/lagent/lagent/actions
touch weather_query.py

5.3 在/root/agent_camp4/lagent/lagent/actions/__init__.py中加入下面第15行和第25行的代码,用以初始化WeatherQuery方法

5.4 修改agent_api_web_demo.py文件的第5行,增加第19行,目的是将该工具注册进大模型的插件列表中

5.5 再次运行 streamlit run agent_api_web_demo.py 

(运行前可以通过bash命令 输入export weather_token='天气的API Key')

我们将2个插件同时勾选上,用以说明模型具备识别调用不同工具的能力,什么任务对应什么工具来解决

第一个回答是没有采用天气api的情况下,模型错误回答(当前是2025年2月5号冬天),第二个回答是2个插件都勾选上后的效果

6. Multi-Agents博客写作系统的搭建

6.1 创建一个新的 Python 文件 multi_agents_api_web_demo.py

conda activate lagent
cd /root/agent_camp4/lagent/examples
touch multi_agents_api_web_demo.py

6.2 运行streamlit run multi_agents_api_web_demo.py,启动Web服务 输入话题,比如Semi-Supervised Learning:

可以看到,Multi-Agents博客写作系统正在按照下面的3步骤,生成、批评和完善内容。

Step 1:写作者根据用户输入生成初稿。

Step 2:批评者对初稿进行评估,提供改进建议和文献推荐(通过关键词触发 Arxiv 文献搜索)。

Step 3:写作者根据批评意见对内容进行改进。

7. Huggingface Spaces 部署

7.1 Huggingface在给项目创建一个新的space, sdk选择Streamlit

7.2 本地设置环境变量

在setting中, Variables and secrets,右上角创建 New secret

这里输入两个 api_key,一个是 token ——浦语/硅基流动 api,一个是 weather_token ——和风天气 api,要注意名称不要写错

保存后,2个token

7.3 获取用户输入token与多页面导航

7.3.1 修改requirements.txt文件,指定初始化环境清单

首先因为 Huggingface Spaces在初始化时需要提供 python 环境的清单,因此我们修改 /root/agent_camp4/lagent/requirements.txt ,在其中添加如下 python 包

torch==2.1.2
torchvision==0.16.2
torchaudio==2.1.2
termcolor==2.4.0
streamlit==1.39.0
class_registry==2.1.2
datasets==3.1.0
# -r requirements/optional.txt
google-search-results
lmdeploy>=0.2.5
pillow
python-pptx
timeout_decorator
torch
transformers>=4.34,<=4.40
vllm>=0.3.3
# -r requirements/runtime.txt
aiohttp
arxiv
asyncache
asyncer
distro
duckduckgo_search==5.3.1b1
filelock
func_timeout
griffe<1.0
json5
jsonschema
jupyter==1.0.0
jupyter_client==8.6.2
jupyter_core==5.7.2
pydantic==2.6.4
requests
termcolor
tiktoken
timeout-decorator
typing-extensions
griffe==0.48.0

7.3.2  app.py 文件(确保app.py文件在层级/root/agent_camp4/lagent/app.py)

由于 Huggingface Spaces 要求 file 中必须有一个名称为 app.py 的文件,否则会出现 No application file 错误

我们当然可以把 agent_api_web_demo.py 和 multi_agents_api_web_demo.py 更名为 app.py,然而考虑到这两个页面文件会调用到其他代码,我们又不希望把时间浪费在找依赖上,于是我们直接在 agent_camp4/lagent 文件夹下做一个 app.py 的入口文件当作 HomePage,编写一个多页面的 streamlit 首页实现对天气查询小助手和博客写作小助手两个 agent 的导航,代码如下(我们这里采用代码写入环境变量的方式,这样子别人来访问的时候可以不用消耗你自己的 api_token,而是让他们自己填写)

7.3.3 

此外由于 streamlit 要求一个页面内只能有一个 st.set_page_config() 函数,因此需要把 agent_api_web_demo.py 和 multi_agents_api_web_demo.py 中的相应代码注释掉,不然会报错,详见https://github.com/InternLM/Tutorial/blob/camp4/docs/L2/Agent/readme.md

7.3.4 文件拷贝和推送

将 agent_camp4/lagent 文件夹下需要的文件用 rsync 全都拷贝到自己新建的 huggingface Spaces 仓库下了(注意,git clone的时候,需要确保cd到root层级,即root/agent_by_lagent/和root/agent_camp4/lagent/是一个level的)

git clone https://hf-mirror.com/spaces/shaoshaoshao/agent_by_lagent
cd agent_by_lagent/
rsync -av -o -t --exclude='.git*' --exclude='README.md' /root/agent_camp4/lagent/ /root/agent_by_lagent/
git add .
git commit -m "Add files"
git push

 7.3.5 推送后,刷新app页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值