本地部署modelscope-agent

部署流程

  1. 在modelscope社区创建一个自己的空间(假设name是LocalAgent),clone空间到本地(或云服务器如魔搭Notebook)

  2. git clone https://github.com/modelscope/modelscope-agent

    复制项目中的modelscop_agent文件夹到你刚才clone的空间文件夹LocalAgent里, 接着复制apps/agentfabric文件夹里的所有文件到文件夹LocalAgent里

  3. pip install -r requirements.txt # 注意我们本地目录里的requirement.txt依赖是缺少的(源自apps/agentfabric),需要再将modelscope-agent的requirement.txt内容贴过来。

  4. 需要torch环境:pip3 install torch torchvision torchaudio

  5. python app.py 缺什么模块补什么 --> No module named 'cv2' --> pip install opencv-contrib-python

  6. 发布的时候直接git push到创空间,修改readme --> app.py --> appBot.py

参考:https://modelscope.cn/headlines/article/278

app.py appBot.py 区别

app.py:

官方写的agent,就是帮我们创建agent的那个agent

appBot.py:

也就是我们自己创建agent的创空间发布页面

本地运行可以选择在环境变量配置大模型的apikey:DASHSCOPE_API_KEY='your apikey'

遇到的问题

问题

本地可以运行调试app.py,但是找不到builder_config.json。上传到创空间,发现发布页面(appBot.py)

依然没有变化,使用的是默认的build_config.json。

解决

修改源码项目目录下config_utils.py文件DEFAULT_AGENT_DIR :

# DEFAULT_AGENT_DIR = '/tmp/agentfabric'
DEFAULT_AGENT_DIR = './'# DEFAULT_AGENT_DIR = '/tmp/agentfabric'
DEFAULT_AGENT_DIR = './'

请注意

创空间重启操作,无法依据builder_config.json文件更新appBot.py发布页面,需要先下线再上线

modelscope-agent原理

1.tool检索

检索出和用户输入最相关的几个tool,减少llm的token消耗

2.知识库检索

将相关的知识检索出来,拼到prompt

3.将prompt输入llm

llm自行判断,如何使用外部工具。外部工具调用会获取一个结果,这个结果会再丢给llm,llm判断是结束整体调用,还是再做一个循环,判断下一步要调用什么工具。

Prompt示例

以下是一个prompt示例,包含两轮对话:

|LLM inputs in round 1:
<|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
# 工具 ## 你拥有如下工具: amap_weather: amap_weather API。 获取对应城市的天气数据 输入参数: [{"name": "location", "description": "get temperature for a specific location", "required": true}] amap_poi_query: amap_poi_query API。 获取高德poi信息 输入参数: [{"name": "keywords", "description": "Text information for the location to be retrieved", "required": true}] ## 当你需要调用工具时,请在你的回复中穿插如下的工具调用命令,可以根据需求调用零次或多次: 工具调用
Action: 工具的名称,必须是["amap_weather", "amap_poi_query"]之一
Action Input: 工具的输入
Observation: <result>工具返回的结果</result>
Answer: 根据Observation总结本次工具调用返回的结果,如果结果中出现url,请不要展示出。 ```
[链接](url)
``` # 指令 你扮演AI-Agent,你的名字是日程规划小助手。一个全能的行程规划助手,从交通、住宿到美食,全方位为您打造专属的行程规划。
你具有下列具体功能:1. 理解并回应用户指令
2. 根据用户指定判断是否需要进行地点查询
3. 如果用户没有输入城市,默认为杭州
4. 随时与用户沟通,及时解遇到的问题。
下面你将开始扮演日程规划小助手,明白了请说“好的。”,不要说其他的。<|im_end|>
<|im_start|>assistant
好的。<|im_end|>
<|im_start|>user
(你正在扮演日程规划小助手,你可以使用工具:amap_weather,amap_poi_query)请帮我查询北京市天气<|im_end|>
<|im_start|>assistant
好的,北京市的天气查询结果如下:
Action: amap_weather
Action Input: {"location": "北京市"}
Observation: <result>北京市的天气是中雪温度是-2度。</result>
Answer: 北京市的天气是中雪,温度为-2度。<|im_end|>
<|im_start|>user
(你正在扮演日程规划小助手,你可以使用工具:amap_weather,amap_poi_query)杭州有哪些海底捞火锅?<|im_end|>
<|im_start|>assistant
好的,杭州的海底捞火锅查询结果如下:
Action: amap_poi_query
Action Input: {"keywords": "海底捞火锅 杭州"}
Observation: <result>[{'name': '海底捞外送(文泽和达城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '钱塘区', 'address': '2号大街文泽和达城3楼309(文泽路地铁站C2口旁)'}, {'nam
e': '海底捞火锅(奥莱金街店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '西湖区', 'address': '转塘街道久耀商业中心1号楼四层407.408室'}, {'name': '海底捞创意手工坊(西田城店)',
'pname': '浙江省', 'cityname': '杭州市', 'adname': '余杭区', 'address': '金家渡路8号西田城F3层'}, {'name': '海底捞火锅(众安广场店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname':
'萧山区', 'address': '北干街道众安广场2幢401-号商铺'}, {'name': '海底捞火锅(西子丁兰广场店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '丁兰街道大农港路1
218号西子丁兰广场3层02号商铺'}, {'name': '海底捞火锅(西湖工联cc店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '延安路292号工联大厦5层518号'}, {'name': '
海底捞火锅(西溪印象城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '余杭区', 'address': '五常大道西溪印象城二期1F、2F'}, {'name': '海底捞火锅(东城购物中心店)', 'pname': '浙
江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '九沙大道399号地铁东城购物中心4楼'}, {'name': '海底捞火锅(大悦城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '拱
墅区', 'address': '隐秀路1号大悦城购物中心5层L5-B10'}, {'name': '海底捞火锅(金沙印象城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '钱塘区', 'address': '金沙大道97号金沙印
象城6层619室'}]</result>
Answer: 杭州的海底捞火锅有10家,分别是:海底捞外送(文泽和达城店)、海底捞火锅(奥莱金街店)、海底捞创意手工坊(西田城店)、海底捞火锅(众安广场店)、海底捞火锅(西子丁兰广场店)、海底捞火锅(西
湖工联cc店)、海底捞火锅(西溪印象城店)、海底捞火锅(东城购物中心店)、海底捞火锅(大悦城店)、海底捞火锅(金沙印象城店)。<|im_end|>
<|im_start|>user
(你正在扮演日程规划小助手,你可以使用工具:amap_weather,amap_poi_query)上海市天气<|im_end|>
<|im_start|>assistant |LLM inputs in round 2:
<|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
# 工具 ## 你拥有如下工具: amap_weather: amap_weather API。 获取对应城市的天气数据 输入参数: [{"name": "location", "description": "get temperature for a specific location", "required": true}] amap_poi_query: amap_poi_query API。 获取高德poi信息 输入参数: [{"name": "keywords", "description": "Text information for the location to be retrieved", "required": true}] ## 当你需要调用工具时,请在你的回复中穿插如下的工具调用命令,可以根据需求调用零次或多次: 工具调用
Action: 工具的名称,必须是["amap_weather", "amap_poi_query"]之一
Action Input: 工具的输入
Observation: <result>工具返回的结果</result>
Answer: 根据Observation总结本次工具调用返回的结果,如果结果中出现url,请不要展示出。 ```
[链接](url)
``` # 指令 你扮演AI-Agent,你的名字是日程规划小助手。一个全能的行程规划助手,从交通、住宿到美食,全方位为您打造专属的行程规划。
你具有下列具体功能:1. 理解并回应用户指令
2. 根据用户指定判断是否需要进行地点查询
3. 如果用户没有输入城市,默认为杭州
4. 随时与用户沟通,及时解遇到的问题。
下面你将开始扮演日程规划小助手,明白了请说“好的。”,不要说其他的。<|im_end|>
<|im_start|>assistant
好的。<|im_end|>
<|im_start|>user
(你正在扮演日程规划小助手,你可以使用工具:amap_weather,amap_poi_query)请帮我查询北京市天气<|im_end|>
<|im_start|>assistant
好的,北京市的天气查询结果如下:
Action: amap_weather
Action Input: {"location": "北京市"}
Observation: <result>北京市的天气是中雪温度是-2度。</result>
Answer: 北京市的天气是中雪,温度为-2度。<|im_end|>
<|im_start|>user
(你正在扮演日程规划小助手,你可以使用工具:amap_weather,amap_poi_query)杭州有哪些海底捞火锅?<|im_end|>
<|im_start|>assistant
好的,杭州的海底捞火锅查询结果如下:
Action: amap_poi_query
Action Input: {"keywords": "海底捞火锅 杭州"}
Observation: <result>[{'name': '海底捞外送(文泽和达城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '钱塘区', 'address': '2号大街文泽和达城3楼309(文泽路地铁站C2口旁)'}, {'nam
e': '海底捞火锅(奥莱金街店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '西湖区', 'address': '转塘街道久耀商业中心1号楼四层407.408室'}, {'name': '海底捞创意手工坊(西田城店)',
'pname': '浙江省', 'cityname': '杭州市', 'adname': '余杭区', 'address': '金家渡路8号西田城F3层'}, {'name': '海底捞火锅(众安广场店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname':
'萧山区', 'address': '北干街道众安广场2幢401-号商铺'}, {'name': '海底捞火锅(西子丁兰广场店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '丁兰街道大农港路1
218号西子丁兰广场3层02号商铺'}, {'name': '海底捞火锅(西湖工联cc店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '延安路292号工联大厦5层518号'}, {'name': '
海底捞火锅(西溪印象城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '余杭区', 'address': '五常大道西溪印象城二期1F、2F'}, {'name': '海底捞火锅(东城购物中心店)', 'pname': '浙
江省', 'cityname': '杭州市', 'adname': '上城区', 'address': '九沙大道399号地铁东城购物中心4楼'}, {'name': '海底捞火锅(大悦城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '拱
墅区', 'address': '隐秀路1号大悦城购物中心5层L5-B10'}, {'name': '海底捞火锅(金沙印象城店)', 'pname': '浙江省', 'cityname': '杭州市', 'adname': '钱塘区', 'address': '金沙大道97号金沙印
象城6层619室'}]</result>
Answer: 杭州的海底捞火锅有10家,分别是:海底捞外送(文泽和达城店)、海底捞火锅(奥莱金街店)、海底捞创意手工坊(西田城店)、海底捞火锅(众安广场店)、海底捞火锅(西子丁兰广场店)、海底捞火锅(西
湖工联cc店)、海底捞火锅(西溪印象城店)、海底捞火锅(东城购物中心店)、海底捞火锅(大悦城店)、海底捞火锅(金沙印象城店)。<|im_end|>

本地部署modelscope-agent的更多相关文章

  1. Kubernetes 学习笔记(二):本地部署一个 kubernetes 集群

    前言 前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的.我们需要有一个多节点集群,才能用到各种调度/监控功能.而且单节点只能是一个加引号的"集群&quo ...

  2. 本地部署arcgis by eclipse

    首次来博客园发帖,从本地部署arcgis api开始吧: 首先还是下载arcgis的api包开始,在中国区官网下载arcgis包: 1.http://support.esrichina.com.cn/ ...

  3. ArcGIS server开发之API for js 本地部署

    ArcGIS Server for javascript 本地部署 第一次使用arcgis server for js开发,在经验方面还有很多的不足,所以将自己在开发过程中遇到的问题写出来与大家共享. ...

  4. Exceptionless 本地部署

    免费开源分布式系统日志收集框架 Exceptionless 前两天看到了这篇文章,亲身体会了下,确实不错,按照官方的文档试了试本地部署,折腾一番后终于成功,记下心得在此,不敢独享. 本地部署官方wik ...

  5. ArcGIS JavaScript API本地部署离线开发环境[转]

    原文地址:http://www.cnblogs.com/brawei/archive/2012/12/28/2837660.html 1 获取ArcGIS JavaScript API API的下载地 ...

  6. Exceptionless 本地部署踩坑记录

    仅已此文记录 Exceptionless 本地部署所遇到的问题 1.安装ElasticSearch文本 执行elasticsearch目录中的elasticsearch.bat 没有执行成功. 使用命 ...

  7. jsbin本地部署

    jsbin 本地运行 1.首先安装node.js,下载地址http://nodejs.org/ 安装完成后,使用node.js安装jsbin,如下:进入node环境,执行下面语句: $ npm ins ...

  8. 解决fiddler无法抓取本地部署项目的请求问题

    在本地部署了几个应用,然后想用fiddler抓取一些请求看看调用了哪些接口,然鹅,一直抓不到... 比如访问地址是这样的: 在网上搜罗半天,找到一个解决方法 在localhost或127.0.0.1后 ...

  9. ArcGIS API for JavaScript 4.x 本地部署之Apache(含Apache官方下载方法)

    IIS.Nginx都说了,老牌的Apache和Tomcat也得说一说(如果喜欢用XAMPP另算) 本篇先说Apache. 安装Apache 这个...说实话,比Nginx难找,Apache最近的版本都 ...

  10. ArcGIS API for JavaScript 4.x 本地部署之Nginx法

    上篇ArcGIS API for JavaScript 4.x 离线配置之IIS法提到,如何用IIS配置ArcGIS jsAPI: 本篇则使用http下的Nginx配置,其原理基本一致.https的部 ...

随机推荐

  1. KIOPTRIX: LEVEL 1.1 (#2) 常规命令注入+内核提权

    0×02 Vulnhub靶机渗透总结之 KIOPTRIX: LEVEL 1.1 (#2) 系列专栏:Vulnhub靶机渗透系列 欢迎大佬:点赞️收藏关注 首发时间: 2023年8月20日 如有错误 还 ...

  2. [ABC150E] Change a Little Bit

    2023-03-10 题目 题目传送门 翻译 翻译 难度&重要性(1~10):7 题目来源 AtCoder 题目算法 数学,贪心 解题思路 显然 \(C_i\) 越小的位越早被修改越好.所以我 ...

  3. 三维模型OBJ格式轻量化压缩主要技术方法浅析

    三维模型OBJ格式轻量化压缩主要技术方法浅析   OBJ格式是一种常用的三维模型文件格式,它以文本形式保存了模型的顶点.纹理坐标和法线信息.为了实现轻量化压缩,可以采用以下主要技术方法: 1.简化网格 ...

  4. 数据可视化【原创】vue+arcgis+threejs 实现流光边界线效果

    本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 效果图: 素材: 主要思路: 先用arcgis externalRenderers封装了一个ExternalRender ...

  5. 如何利用电商API接口来获取商品数据

    要利用电商API接口来获取商品数据,我们可以按照以下步骤实现: 确定电商平台和API接口 不同的电商平台提供不同的API接口,因此我们需要确定我们要获取商品数据的电商平台,并选择相应的API接口进行调 ...

  6. MQ系列14:MQ如何做到消息延时处理

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  7. CentOS 8 无痕升级到 Rocky Linux

    CentOS 8 无痕升级到 Rocky Linux 1.升级当前系统 dnf upgrade -y 2.重启当前系统: reboot 3.下载脚本: CentOS 8 到 Rocky Linux 8 ...

  8. 使用GPU搭建支持玛雅(Maya)和Adobe AI,DW,PS的职校云计算机房

    背景 学校为职业学校,计算机教室需要进行Maya.Adobe Illustrator.Adobe Dreamweaver.Adobe PhotoShop等软件的教学.每个教室为35用户.资源需求为4核 ...

  9. doris建表报错 errCode = 2, detailMessage = Scale of decimal must between 0 and 9. Scale was set to: 10

    doris建表报错 问题背景 当我从Mpp库向doris库中导数据时,需要先创建对应的数据表,将Mpp库中表的建表语句略作修改后,在doris服务器上运行 CREATE TABLE opt_conne ...

  10. kubernates的集群安装-kubadm

    kubernates的集群安装-kubadm 环境准备工作(CentOS) 准备三台或以上的虚拟机 停用防火墙 sudo systemctl stop firewalld sudo systemctl ...