MSAgent-Bench-中文Agent数据集 已完整同步
MSAgent-Bench
ModelScope-Agent是一个通用且可定制的代理框架,用于实际应用,基于开源LLMs作为种树。它提供了一个用户友好的系统库,具有可定制的引擎设计,支持在多个开源LLMs上进行模型训练,同时还以一种统一的方式实现了与模型API和常见API的无缝集成。
我们提出MSAgentBench书籍,提升开源LLM作为中枢,来集成调用多种ModelScope的众多AI模型能力。具体的收集方式和详细介绍,可以参考github。
数据集加载方式
方法1:使用sdk加载
import ast
from modelscope.msdatasets import MsDataset
ds = MsDataset.load('damo/MSAgent-Bench', split='train') # or split='validation'
one_ds = next(iter(ds))
print(one_ds)
# to parse conversations value
conv = one_ds['conversations']
conv = ast.literal_eval(conv)
print(conv[0]['from'])
print(conv[0]['value'])
数据集介绍
我们在ModelScope社区上提供了插件的训练数据集,包括598k的训练集和对应的验证集,测试集。数据集主要包括了四种:AI模型API,通用API,API无关通用sft数据,API检索增强数据
数据集文件包含了train/dev两个个文件共接近600k样本。数据格式为每行一个样本,里面包含了id和converstions两个字段,其中conversations里面包含了system,user,assistant三种字段。其中:
system: 表示给模型前置的人设输入,其中有告诉模型如何调用插件以及生成请求
user: 表示用户的输入prompt,分为两种,通用生成的prompt和调用插件需求的prompt
assistant: 为模型的回复。其中会包括插件调用代码和执行代码,调用代码是要LLM生成的,而执行代码是调用服务来生成结果的。如下面例子,调用部分代码会通过<|startofthink|>和<|endofthink|>包起来,>然后执行部分代码是api执行完结果后,把执行结果通过<|startofexec|>和<|endofexec|>包起来再输入给模型生成后面的回复
{
"id":"modelscope_merge_api_527",
"conversations":[
{
"from":"system",
"value":"你是达摩院的ModelScopeGPT(魔搭助手),你是个大语言模型, 是2023年达摩院的工程师训练得到的。你有多种能力,可以通过插件集成魔搭社区的模型api来回复用户的问题,还能解答用户使用模型遇到的问题和模型知识相关问答。1. {\"plugin_name\": \"modelscope_text-ie\", \"plugin_owner\": \"ModelScopeGPT\", \"plugin_type\": \"default\", \"plugin_schema_for_model\": {\"name\": \"modelscope_text-ie\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"url\": \"http://109.199.101.10:1485/\", \"paths\": [{\"name\": \"modelscope_text-ie\", \"model_id\": \"/damo/nlp_structbert_siamese-uie_chinese-base\", \"method\": \"post\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"parameters\": [{\"name\": \"text\", \"description\": \"用户输入的文本\", \"required\": \"True\"}, {\"name\": \"schema\", \"description\": \"要抽取信息的json表示\", \"required\": \"True\"}]}]}}\n\n2. {\"plugin_name\": \"modelscope_text-ie\", \"plugin_owner\": \"ModelScopeGPT\", \"plugin_type\": \"default\", \"plugin_schema_for_model\": {\"name\": \"modelscope_text-ie\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"url\": \"http://9.32.64.200:5873/\", \"paths\": [{\"name\": \"modelscope_text-ie\", \"model_id\": \"/damo/nlp_structbert_siamese-uie_chinese-base\", \"method\": \"post\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"parameters\": [{\"name\": \"text\", \"description\": \"用户输入的文本\", \"required\": \"True\"}, {\"name\": \"schema\", \"description\": \"要抽取信息的json表示\", \"required\": \"True\"}]}]}}\n\n3. {\"plugin_name\": \"modelscope_text-ie\", \"plugin_owner\": \"ModelScopeGPT\", \"plugin_type\": \"default\", \"plugin_schema_for_model\": {\"name\": \"modelscope_text-ie\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"url\": \"http://54.149.78.185:3979/\", \"paths\": [{\"name\": \"modelscope_text-ie\", \"model_id\": \"/damo/nlp_structbert_siamese-uie_chinese-base\", \"method\": \"post\", \"description\": \"针对中文的文本,根据schema要抽取的内容,找出其中对应信息,并用json格式展示\", \"parameters\": [{\"name\": \"text\", \"description\": \"用户输入的文本\", \"required\": \"True\"}, {\"name\": \"schema\", \"description\": \"要抽取信息的json表示\", \"required\": \"True\"}]}]}}"
},
{
"from":"user",
"value":"按照给定的schema抽取出下面文本对应的信息\nschema:{\"人物\": null, \"地理位置\": null, \"组织机构\": null}\n近日,美国政府宣布将对中国1000多种商品加征关税,并威胁进一步加征关税。"
},
{
"from":"assistant",
"value":"<|startofthink|>```JSON\n{\"api_name\": \"modelscope_text-ie\", \"url\": \"http://9.32.64.200:5873/damo/nlp_structbert_siamese-uie_chinese-base\", \"parameters\": {\"text\": \"近日,美国政府宣布将对中国1000多种商品加征关税,并威胁进一步加征关税。\", \"schema\": \"{\\\"人物\\\": null, \\\"地理位置\\\": null, \\\"组织机构\\\": null}\"}}\n```<|endofthink|>\n\n<|startofexec|>```JSON\n{\"人物\": [], \"地理位置\": [\"中国\", \"美国\"], \"组织机构\": []}\n```<|endofexec|>\n信息抽取结果:{\"人物\": [], \"地理位置\": [\"中国\", \"美国\"], \"组织机构\": []}。我使用的模型是ModelScope的'damo/nlp_structbert_siamese-uie_chinese-base'模型。这是一个基于StructBERT预训练模型微调训练的通用信息抽取模型。"
}
]
}
方案实现
利用提供的API插件数据,在开源大模型上进行微调,因为数据里面只提供了少量的sft数据,所以最好是基于已经在sft上训练过的生成大模型,这样可以很快的泛化到训练集的API插件数据。
涉及到的几个模型API在魔搭社区都有相应的服务提供,需要测试调用链路是否顺畅,输入输出结果是否符合数据集的要求,比如信息抽取api,可以进入modelscope模型主页,从 “部署” -> “api推理”来调用。
推理链路搭建设计到LLM的推理和API的调用
- 模型生成完整的<|startofthink|>和<|endofthink|>后,需要我们实时的去请求对应的API
- 返回结果后<|startofexec|>和<|endofexec|>拼接到现有的输入
- 然后再让大模型继续生成回复
实验评估
评估包含下面四个维度:
- 插件调用的准确率:识别api_name后面的是否正确,
- 插件url的准确率:url的地址是否正确
- 插件传入参数的准确率:parameters对应的参数是否正确
- 插件整体的准确率:生成的 function calling是否完全正确,整个json可以被load的格式
数据集版权信息
数据集已经开源,license为Apache License 2.0,如有违反相关条款,随时联系modelscope删除。
6 个文件
浏览文件数据集版权信息
本数据集的许可证为 Apache License 2.0。如有违反相关条款,请联系 WEHUB,我们将及时处理。 查看许可证
通过 WeHub CLI 下载当前数据集快照。下列命令会固定为当前页面展示的数据版本(如果页面提供版本)。文件字节由本机直连存储下载,浏览器不会签发或保存下载链接。
前置要求
需要 Node.js 18 及以上,以及 npm(或 npx)。
1. 安装 CLI
npm install -g wehub-cli@latest
2. 下载此数据集
wehub datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d
若中断或部分失败,在同一目录重新执行同一命令即可续传。默认会校验 SHA-256。
免全局安装
npx --yes wehub-cli@latest datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d
高级选项
以下为 wehub datasets download 已支持的参数示例:
强制重新下载,不复用已校验的本地文件
wehub datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d --overwrite
仅包含匹配路径
wehub datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d --include "*.jsonl"
排除匹配路径
wehub datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d --exclude "*.md"
提高并发下载数
wehub datasets download ds_iic_msagent_bench_8a983f6a9d --revision 350cf32d0239f621702df769c3efbf2a28aa1725 --output ./ds_iic_msagent_bench_8a983f6a9d --jobs 8
完整帮助:wehub datasets download --help
