前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >无外网环境部署 AgentFabric 及使用 AgentFabric 构建的 Agent

无外网环境部署 AgentFabric 及使用 AgentFabric 构建的 Agent

作者头像
AlphaHinex
发布2024-04-16 16:06:05
1240
发布2024-04-16 16:06:05
举报
文章被收录于专栏:周拱壹卒周拱壹卒
  • 目标:在纯内网环境完成基于 ModelScope-Agent[1] 的可定制化的 Agent 的构建和发布
  • 前提:需在有外网环境提前下载好所需内容

一、外网环境中下载所需内容

在可以访问外网的环境中,准备一个工作目录(如:/data/work),在这个目录下进行后续操作。

1. 拉取镜像

拉取 ModelScope-Agent 镜像,镜像中已经安装好所需依赖。

代码语言:javascript
复制
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope-agent:v0.3.0

导出镜像文件:

代码语言:javascript
复制
docker save > modelscope-agent.tar \
registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope-agent:v0.3.0

启动容器:

代码语言:javascript
复制
docker run -ti -v /data/work:/data/work \
registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope-agent:v0.3.0 bash

其中 -v /data/work:/data/work 把本地 /data/work 目录挂载到容器中的相同路径。执行命令此命令后已进入容器,后续操作都将在容器中进行。

从容器中进入到工作目录:

代码语言:javascript
复制
cd /data/work

2. 下载 LLM 模型

在容器工作目录中下载模型到本地:以 qwen/Qwen1.5-7B-Chat 模型为例,可以换成其他微调的模型:

代码语言:javascript
复制
python -c "from modelscope import snapshot_download; snapshot_download('qwen/Qwen1.5-7B-Chat', cache_dir='qwen1.5-7b-chat')"

3. 下载 Embedding 模型

在容器工作目录中下载 ModelScope-Agent 使用的 Embedding 模型damo/nlp_gte_sentence-embedding_chinese-base[2], 也可换成其他模型:

代码语言:javascript
复制
git clone https://www.modelscope.cn/iic/nlp_gte_sentence-embedding_chinese-base.git

4. 下载 ModelScope-Agent 代码

在容器工作目录中拉取 ModelScope-Agent 最新 master 分支代码:

代码语言:javascript
复制
git clone https://github.com/modelscope/modelscope-agent.git

5. 下载内容传输至内网环境

将工作目录传输至内网离线环境对应目录中,可同样使用 /data/work

二、内网环境部署 LLM

导入镜像

进入工作路径 /data/work,导入镜像文件:

代码语言:javascript
复制
docker load < modelscope-agent.tar

部署 LLM 服务

ModelScope 提供模型 本地启动服务[3] 功能。

这里我们使用该功能,将模型部署成 Openai API 兼容的接口。具体操作可参考如下:

代码语言:javascript
复制
# 创建并进入容器
nvidia-docker run -ti --net host -v /data/work:/data/work \
registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope-agent:v0.3.0 bash

从容器中进入到工作目录:

代码语言:javascript
复制
cd /data/work

在容器工作目录中启动服务:

代码语言:javascript
复制
MODELSCOPE_CACHE='qwen1.5-7b-chat' python -m vllm.entrypoints.openai.api_server \
    --model qwen/Qwen1.5-7B-Chat --dtype=half --max-model-len 8192  --gpu-memory-utilization 0.95 &

随后测试模型服务,如果正确返回,说明模型服务部署完成。

代码语言:javascript
复制
curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen/Qwen1.5-7B-Chat",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "写一篇春天为主题的作文"}
        ],
        "stop": ["<|im_end|>", "<|endoftext|>"]
    }'

三、内网环境部署 AgentFabric

另起一个终端窗口,登录到上面拉起的 docker 容器中:

代码语言:javascript
复制
# 查看之前容器ID
sudo docker ps -a
# 进入对应容器ID的容器
sudo docker exec -ti CONTAINER_ID bash

在容器工作目录(/data/work)中进行后续操作。

编辑模型配置文件

编辑 modelscope-agent/apps/agentfabric/config/model_config.json, 增加如下配置:

代码语言:javascript
复制
diff --git a/apps/agentfabric/config/model_config.json b/apps/agentfabric/config/model_config.json
index 4db68ce..be7fbf3 100644
--- a/apps/agentfabric/config/model_config.json
+++ b/apps/agentfabric/config/model_config.json
@@ -124,5 +124,12 @@
         "api_base": "http://localhost:8000/v1",
         "is_chat": true,
         "is_function_call": false
+    },
+    "qwen1.5-7b-chat": {
+        "type": "openai",
+        "model": "qwen/Qwen1.5-7B-Chat",
+        "api_base": "http://localhost:8000/v1",
+        "is_chat": true,
+        "is_function_call": false
     }
 }

编辑 Embedding 模型 model_id

编辑 modelscope-agent/modelscope_agent/storage/vector_storage.py,将该文件中的模型 model_id 修改为本地模型路径:

代码语言:javascript
复制
diff --git a/modelscope_agent/storage/vector_storage.py b/modelscope_agent/storage/vector_storage.py
index c6f9fdc..29f518a 100644
--- a/modelscope_agent/storage/vector_storage.py
+++ b/modelscope_agent/storage/vector_storage.py
@@ -28,7 +28,7 @@ class VectorStorage(BaseStorage):
         self.storage_path = storage_path
         self.index_name = index_name
         self.embedding = embedding or ModelScopeEmbeddings(
-            model_id='damo/nlp_gte_sentence-embedding_chinese-base')
+            model_id='/data/work/nlp_gte_sentence-embedding_chinese-base')
         self.vs_cls = vs_cls
         self.vs_params = vs_params
         self.index_ext = index_ext

拉起 AgentFabric

modelscope-agent/apps/agentfabric 目录下执行如下命令拉起 AgentFabric Gradio:

代码语言:javascript
复制
GRADIO_SERVER_NAME=0.0.0.0 PYTHONPATH=../../  python app.py

启动时如遇 ModuleNotFoundError: No module named 'modelscope_studio' 报错,请将 modelscope-agent 仓库回滚至 8deef6d4git checkout 8deef6d4),因为后面的 68c7dd7f[4] 提交修改了依赖,导致镜像中缺少新增的依赖。

如需更改默认配置文件路径,可修改 modelscope-agent/apps/agentfabric/config_utils.py 中的 DEFAULT_AGENT_DIR 和通过环境变量指定 CODE_INTERPRETER_WORK_DIR,如:

代码语言:javascript
复制
CODE_INTERPRETER_WORK_DIR=/data/work/agentfabric/ci_workspace \
GRADIO_SERVER_NAME=0.0.0.0 PYTHONPATH=../../  python app.py

然后在浏览器中输入 http://内网服务器IP:7860 打开即可看到如下界面。

AgentFabric

四、内网环境发布使用 AgentFabric 构建的 Agent

通过 AgentFabric 完成 Agent 的基本配置之后,在 配置(Configure) tab 页点击左侧下方的 更新配置 按钮, 即可将自定义的配置内容生成至指定的配置文件中(默认路径为 /tmp/agentfabric/config/local_user/builder_config.json)。

完成配置后可停掉 AgentFabric 的 Gradio 应用。

发布配置好的 Agent Gradio 应用,可在 modelscope-agent/apps/agentfabric 目录下执行如下命令:

代码语言:javascript
复制
GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7865 PYTHONPATH=../../  python appBot.py

如启动 AgentFabric 时指定了配置文件路径,启动 Agent 时也需指定相同路径。

然后在浏览器中输入 http://内网服务器IP:7865 打开即可看到界面。

Custom Agent

参考资料

[1]

ModelScope-Agent: https://github.com/modelscope/modelscope-agent

[2]

damo/nlp_gte_sentence-embedding_chinese-base: https://github.com/modelscope/modelscope-agent/blob/master/modelscope_agent/storage/vector_storage.py#L31

[3]

本地启动服务: https://modelscope.cn/docs/%E6%9C%AC%E5%9C%B0%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1

[4]

68c7dd7f: https://github.com/modelscope/modelscope-agent/commit/68c7dd7ffae0a1f93938ac3fa3fed7bfdfcdfb2b#diff-8544efbeb959a409d00730a025fd51bf9da42cd560aa4d2bd5e24f6ddbd8c9f5R7

DB-GPT v0.4.0 使用通义千问 API Chat Excel

让 AI 辅助编写内部代码

《自然语言处理实战》书摘

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 周拱壹卒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、外网环境中下载所需内容
    • 1. 拉取镜像
      • 2. 下载 LLM 模型
        • 3. 下载 Embedding 模型
          • 4. 下载 ModelScope-Agent 代码
            • 5. 下载内容传输至内网环境
            • 二、内网环境部署 LLM
              • 导入镜像
                • 部署 LLM 服务
                • 三、内网环境部署 AgentFabric
                  • 编辑模型配置文件
                    • 编辑 Embedding 模型 model_id
                      • 拉起 AgentFabric
                      • 四、内网环境发布使用 AgentFabric 构建的 Agent
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档