魔搭Agent体验升级!支持编辑已发布的Agent、新增tool说明书等

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 魔搭Agent作为开源版GPTs,可以零代码DIY一个具备丰富功能的chat bot,今天上线了一个新版本优化了相关体验,来看!

魔搭Agent作为开源版GPTs,可以零代码DIY一个具备丰富功能的chat bot,今天上线了一个新版本优化了相关体验,来看!

一、新增固定入口

魔搭平台-创空间-交互式创建:

https://www.modelscope.cn/studios/agent

二、已发布Agent支持编辑后重新发布

方便开发者们不断优化prompt和其他配置,持续打磨Agent

同时,编辑中状态的创空间可存储到草稿箱,并在我创建的—我的创空间查找

https://www.modelscope.cn/my/myspace

三、tool增加相关参数说明

你可以参考tool的参数说明及使用案例来调用它,还会附上贡献者相关信息

四、欢迎贡献tool!

欢迎开发者贡献tool,可提交PR,参考:https://github.com/modelscope/modelscope-agent/pull/283/commits

详细攻略:

1、tool注册

历经多次迭代,用户可以更快速的接入一个新的工具进入主库。

以下为接一个新tool入库的示例:

import os
from modelscope_agent.tools.base import BaseTool, register_tool
from modelscope_agent.tools.utils.output_wrapper import AudioWrapper
from pydantic import ValidationError
WORK_DIR = os.getenv('CODE_INTERPRETER_WORK_DIR', '/tmp/ci_workspace')
@register_tool('sambert_tts')
class SambertTtsTool(BaseTool):
    description = 'Sambert语音合成服务,将文本转成语音'
    name = 'sambert_tts'
    parameters: list = [{
        'name': 'text',
        'description': '需要转成语音的文本',
        'required': True,
        'type': 'string'
    }]
    def __init__(self, cfg={}):
        self.cfg = cfg.get(self.name, {})
        self.api_key = self.cfg.get('dashscope_api_key',
                                    os.environ.get('DASHSCOPE_API_KEY'))
        if self.api_key is None:
            raise ValueError('Please set valid DASHSCOPE_API_KEY!')
        super().__init__(cfg)
    def call(self, params: str, **kwargs) -> str:
        from dashscope.audio.tts import SpeechSynthesizer
        params = self._verify_args(params)
        tts_text = params['text']
        if tts_text is None or len(tts_text) == 0 or tts_text == '':
            raise ValueError('tts input text is valid')
        os.makedirs(WORK_DIR, exist_ok=True)
        wav_file = WORK_DIR + '/sambert_tts_audio.wav'
        response = SpeechSynthesizer.call(
            model='sambert-zhijia-v1', format='wav', text=tts_text)
        if response.get_audio_data() is not None:
            with open(wav_file, 'wb') as f:
                f.write(response.get_audio_data())
        else:
            raise ValueError(
                f'call sambert tts failed, request id: {response.get_response().request_id}'
            )
        return str(AudioWrapper(wav_file))

解读:

  • line10:@register_tool('sambert_tts')用于将该工具类注册到注册中心以便后续调用, 并取名为 sambert_tts
  • line 12-19: 工具在被大模型调用的时候,所有需要的信息都会被定义在这部分,不同的工具对应的name, description必须要描述清晰,以便大模型能够正确的使用该工具。 于此同时, parameters需要严格按照上述格式进行定义,以便模型能够正确生成调用该工具的参数,参数需要包括:name, description, required和type。
  • line 21: __init__()方法可以把,一些非运行时相关的配置加在这里。
  • line 22:  self.cfg = cfg.get(self.name, {})对于一些配置较多,或者需要配置来自于文件的场景,可以使用该方法来初始化一个工具。
  • line 31: call()方法定义了该工具使用参数进行任务执行的具体方法,注意入参即为上一步中大模型生成的parameters,并且以string的方式传入。
  • line 33:  params = self._verify_args(params)该方法用parse,stringify的 parameters成为dict,我们已经有默认方法得以实现。 针对一些模型生成效果不好的场景,或者需要有特殊解析逻辑的场景,用户可以自行实现该类。
  • line 34-48: 该地方实现了利用dashscope的tts接口调用的方法,用户可以在这里完成实现各自tool的具体功能,对于调用一些异步的api,需要轮训等任务的,可以考(https://github.com/modelscope/modelscope-agent/blob/master/modelscope_agent/tools/dashscope_tools/style_repaint.py)。

2、在Agent中使用tool

在上一步中,我们已经定义了一个新的tool类,那么下面会演示如何调用它。

from modelscope_agent.agents import RolePlay
role_template = '你扮演一名语音合成大师,可以将文本转化为语音。'
llm_config = {
    'model': 'qwen-max', 
    'model_server': 'dashscope',
    }
# 对于需要额外config的情况
function_list = [{
    'sambert_tts':{
      'dashscope_api_key': os.environ.get('DASHSCOPE_API_KEY')
    }
}]
# 对于不需要额外config的情况,直接写注册的名称即可
function_list = ['sambert_tts']
bot = RolePlay(function_list=function_list,llm=llm_config, instruction=role_template)
response = bot.run("请帮我把,modelscope-agent真棒,用甜美女声念出来。", remote=False, print_info=True)
text = ''
for chunk in response:
    text += chunk
print(text)

解读:

  • line 3:定义了agent的提示词,用于推进任务。
  • line 4-7: 定义了agent所需要的模型,目前qwen-max是qwen系列中指令理解,指令生成效果最好的模型
  • line 9-17: 在这里我们将刚才注册到工具注册中心的新工具 sambert_tts加到function_list 待agent调用,其中两种形式,带config传入的或者单纯名字的均可。
  • line 19: 利用上述几步的信息初始化 agent
  • line 21-25: 提交任务给agent,完成相关工具的调用。

另外,还有一个演示demo可以参考:https://github.com/modelscope/modelscope-agent/blob/master/demo/demo_register_new_tool.ipynb

3、文档准备

  • 需要添加readme,用于解释该readme中所调用的函数参数意义,或者是否需要额外的配置,以便能够跑通;
  • 同时,还需要提交贡献者信息以便,系统能够透出展示贡献者信息;
  • 相关readme示例如下:
# 语音合成
API详情地址:[https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13?spm=a2c4g.11186623.0.i4](https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13?spm=a2c4g.11186623.0.i4)
|  必选参数  |  参数解释  |
| --- | --- |
|  API密钥  |  这里复用DASHSCOPE\_API\_KEY,无需额外添加环境变量。|
|  贡献者昵称  |  W宜俊  |
| --- | --- |
|  邮箱  |  220221113@seu.edu.cn  |
|  魔搭账号  |  wyj123456  |
|  GitHub  |  [https://github.com/wangyijunlyy](https://github.com/wangyijunlyy)  |

或者参考其他tool的介绍文案:

4、添加单元测试

  • 除了完成核心模块的开发,还需要添加单元测试用例,以便确保功能完整性,测试用例可以参考:code interpreter unit test
  • 跑测试用例,仅需要确保当前测试用例通过即可
  • modelscope-agent利用pytest完成测试,因此未安装pytest的话,需要先安装pytest,示例如下:
pytest modelscope-agent/tools/contrib/demo/test_case.py

5、总结:文档结构

综上,

  • 提交代码需要三个文件: 执行文件,测试文件和readme
  • 需要将上述三个文件放到一个文件夹中,为了让该文件夹被引用还需要一个__init__.py文件
  • 最后,需要确保该文件夹位于 modelscope_agent/tools/contrib 下。一个实例如下图所示:
contrib
├── __init__.py
└── demo
    ├── README.md
    ├── __init__.py
    ├── renew_aliyun_instance.py
    └── test_case.py

  • 需要将该类加入到 modelscope_agent/tools/contrib/__init__.py, 以便被上一层引用到。

6、代码提交规范:

  • 所有新加入的tool类,需要从 modelscope-agent 库中fork出来独立的库,并单独开分支提交, 命名规则为:
git checkout -b tool/{your-new-tool-name}
  • 新增完代码以及对应的单测用例以外,需要确保代码格式正确,可以参考如下命令执行,确保安装自动格式检查\更新的工具pre-commit:
# 对于第一次跑的同学,需要安装pre-commit,并在项目中初始化
pip install pre-commit
pre-commit install
pre-commit run --all-files
# 后续在每一次commit的时候会有格式自动检查及修复, 使用如下命令即可
git add .
git commit -m "add new tool"
# 如果遇到无法进行修复的格式错误,可以尝试手动修改,或者跳过
git commit -m "add new tool" --no-verify

五、历史功能

魔搭Agent其他功能参考历史文章:

Modelscope Agent实操(一):0代码创建、发布并分享一个专属Agent

Modelscope Agent实操(二):低代码调用API创建更加酷炫的Agent

Modelscope Agent实操(三):将API注册为tool,成为smart API,方便社区开发者调用

Agent实操(四):Code Interpreter,生成二维码、视频、PDF转txt等炸裂功能

相关文章
社区供稿 | 魔搭Agent创意挑战赛作品体验感受
近期在闲逛知乎时看到魔搭发起了一个Agent创新应用比赛,看了下奖金还挺高的呀( •̀ ω •́ )y
|
1月前
|
JSON 数据可视化 知识图谱
基于百炼 qwen plus 、开源qwen2.5 7B Instruct 建非schema限定的图谱 用于agent tool的图谱形式结构化 文本资料方案
基于百炼 qwen plus 的上市企业ESG图谱构建工作,通过调用阿里云的 OpenAI 服务,从 Excel 文件读取上市公司 ESG 报告数据,逐条处理并生成知识图谱,最终以 YAML 格式输出。该过程包括数据读取、API 调用、结果处理和文件保存等步骤,确保生成的知识图谱全面、动态且结构清晰。此外,还提供了基于 Pyvis 的可视化工具,将生成的图谱以交互式图形展示,便于进一步分析和应用。
358 3
|
1月前
|
人工智能 测试技术 API
成功注册Google的SerpAPI实现AI Agent的tool
成功注册Google的SerpAPI实现AI Agent的tool
42 5
|
4月前
|
敏捷开发 网络协议 测试技术
阿里云云效产品使用合集之在vpc网络里,如何升级agent
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
机器学习/深度学习 人工智能 Linux
【机器学习】Dify:AI智能体开发平台版本升级
【机器学习】Dify:AI智能体开发平台版本升级
283 0
|
6月前
|
人工智能 数据可视化 API
Multi-Agent实践第9期: 多智能体的升级体验
AgentScope 的新版本主要从 RAG,可视化和系统提示优化三个角度进行了更新,旨在降低开发者的开发代价,提供更加友好的开发体验。
|
7月前
|
开发框架 API 决策智能
ModelScope-Agent框架再升级!新增一键配置多人聊天,配套开源多智能体数据集和训练
ModelScope-Agent是魔搭社区推出的适配开源大语言模型(LLM)的AI Agent(智能体)开发框架,借助ModelScope-Agent,所有开发者都可基于开源 LLM 搭建属于自己的智能体应用。在最新升级完Assistant API和Tool APIs之后,我们又迎来了多智能体聊天室的升级,通过几分钟快速配置即可搭建一个全新的聊天室。
|
7月前
|
安全 API 开发者
智能体-Agent能力升级!新增Assistant API & Tools API服务接口
ModelScope-Agent是一个交互式创作空间,它支持LLM(Language Model)的扩展能力,例如工具调用(function calling)和知识检索(knowledge retrieval)。它已经对相关接口进行了开源,以提供更原子化的应用LLM能力。用户可以通过Modelscope-Agent上的不同代理(agent),结合自定义的LLM配置和消息,调用这些能力。
|
7月前
|
人工智能 API 决策智能
【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
171 0
|
数据可视化 测试技术 API
Modelscope Agent实操(三):将API注册为tool,成为smart API,方便社区开发者调用
大家通过写python代码的方式来定制自己的tool,进一步扩展Agent的能力。

热门文章

最新文章

下一篇
DataWorks