---
title: MSAgent-Bench
canonical_url: "https://www.modelscope.cn/datasets/damo/MSAgent-Bench"
md_url: "https://www.modelscope.cn/datasets/damo/MSAgent-Bench.md"
repository: damo/MSAgent-Bench
chinese_name: "MSAgent-Bench-中文Agent数据集"
last_updated: 2024-09-02
license: "Apache License 2.0"
storage_size: "2.1 GB"
domain:
  - configs
  - source_datasets
tasks:
  - "{config_name=default, data_files=[{path=train.jsonl, split=train}, {path=dev.jsonl, split=validation}]}"
  - original
downloads: 36082
stars: 102
---

# MSAgent-Bench

> MSAgent-Bench - damo 在 ModelScope 开源的数据集。ModelScope-Agent是一个通用且可定制的代理框架，用于实际应用，基于开源LLMs作为种树。它提供了一个用户友好的系统库，具有可定制的引擎设计，支持在多个开源LLMs上进行模型训练，同时还以一种统一的方式实现了与模型API和常见API的无缝集成。

damo/MSAgent-Bench 是 ModelScope 魔搭社区上的{config_name=default, data_files=[{path=train.jsonl, split=train}, {path=dev.jsonl, split=validation}]}、original数据集，涉及 configs、source_datasets 领域，存储大小 2.1 GB，采用 Apache License 2.0 许可。

- **Repository**: damo/MSAgent-Bench
- **License**: Apache License 2.0
- **Tasks**: {config_name=default, data_files=[{path=train.jsonl, split=train}, {path=dev.jsonl, split=validation}]}, original
- **Domain**: configs, source_datasets
- **Storage size**: 2.1 GB
- **Downloads**: 36082
- **Stars**: 102
- **Last updated**: 2024-09-02

Source: https://www.modelscope.cn/datasets/damo/MSAgent-Bench

---

### MSAgent-Bench

ModelScope-Agent是一个通用且可定制的代理框架，用于实际应用，基于开源LLMs作为种树。它提供了一个用户友好的系统库，具有可定制的引擎设计，支持在多个开源LLMs上进行模型训练，同时还以一种统一的方式实现了与模型API和常见API的无缝集成。

我们提出MSAgentBench书籍，提升开源LLM作为中枢，来集成调用多种ModelScope的众多AI模型能力。具体的收集方式和详细介绍，可以参考[github](https://github.com/modelscope/modelscope-agent)。

### 数据集加载方式
#### 方法1：使用sdk加载
```python
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](MSAgent-Bench.png)


数据集文件包含了train/dev两个个文件共接近600k样本。数据格式为每行一个样本，里面包含了id和converstions两个字段，其中conversations里面包含了system，user，assistant三种字段。其中：

system: 表示给模型前置的人设输入，其中有告诉模型如何调用插件以及生成请求

user: 表示用户的输入prompt，分为两种，通用生成的prompt和调用插件需求的prompt

assistant: 为模型的回复。其中会包括插件调用代码和执行代码，调用代码是要LLM生成的，而执行代码是调用服务来生成结果的。如下面例子，调用部分代码会通过<|startofthink|>和<|endofthink|>包起来，>然后执行部分代码是api执行完结果后，把执行结果通过<|startofexec|>和<|endofexec|>包起来再输入给模型生成后面的回复

```json
{
    "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删除。
