• 本地部署modelscope-agent


    本地部署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示例,包含两轮对话:

    image-20231213171724513
    |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: 工具返回的结果
    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: 北京市的天气是中雪温度是-2度。
    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: [{'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室'}]
    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: 工具返回的结果
    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: 北京市的天气是中雪温度是-2度。
    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: [{'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室'}]
    Answer: 杭州的海底捞火锅有10家,分别是:海底捞外送(文泽和达城店)、海底捞火锅(奥莱金街店)、海底捞创意手工坊(西田城店)、海底捞火锅(众安广场店)、海底捞火锅(西子丁兰广场店)、海底捞火锅(西
    湖工联cc店)、海底捞火锅(西溪印象城店)、海底捞火锅(东城购物中心店)、海底捞火锅(大悦城店)、海底捞火锅(金沙印象城店)。<|im_end|>
    
  • 相关阅读:
    大数据面试技术复习hadoop,hdfs,yarn
    深度学习中的图像处理(基本介绍+示例代码)
    中集集团全球港航人工智能独角兽中集飞瞳,全球顶尖AI核心技术高泛化性高鲁棒性稀疏样本持续学习工业级高性能港航AI产品全球规模应用
    【原创】基于SSM的体育场地预约管理系统(毕业设计源码)
    计算机毕业设计(附源码)python疫情下的学生出入管理系统
    win10 配置 oh-my-posh
    大数据在电力行业的应用案例100讲(十七)-基于微服务架构的营配贯通设计
    protobuf 中复合数据类型的读写
    Dubbo入门---搭建一个最简单的Demo框架
    重磅博文:可以找我咨询问题了
  • 原文地址:https://www.cnblogs.com/passion2021/p/17899549.html