数据集 / MSAgent-Bench-中文Agent数据集

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检索增强数据

dataset

数据集文件包含了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的调用

  1. 模型生成完整的<|startofthink|>和<|endofthink|>后,需要我们实时的去请求对应的API
  2. 返回结果后<|startofexec|>和<|endofexec|>拼接到现有的输入
  3. 然后再让大模型继续生成回复

实验评估

评估包含下面四个维度:

  1. 插件调用的准确率:识别api_name后面的是否正确,
  2. 插件url的准确率:url的地址是否正确
  3. 插件传入参数的准确率:parameters对应的参数是否正确
  4. 插件整体的准确率:生成的 function calling是否完全正确,整个json可以被load的格式

数据集版权信息

数据集已经开源,license为Apache License 2.0,如有违反相关条款,随时联系modelscope删除。

6 个文件

浏览文件