资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

导入Role(user+assistant)数据

登录到千帆ModelBuilder操作台,在左侧功能列选择通用数据集,进入主任务界面。

数据格式说明

Role(user+assistant):单轮或多轮的文本对话数据,提问与回答一一对应,支持多角色类型与Function Call工具调用。适用于模型精调的SFT大语言模型训练。

多角色类型

数据样本中的messages (list, required) 描述多角色对话和互动。在不包含工具调用的精调数据中,可填写的角色具体说明如下:

Role(角色) 是否必须包含 角色说明
system 代表系统角色设定,其content字段为角色设定信息
user 代表用户输入,其content字段为对话文本内容
assistant 无标注样例不包含,有标注样例包含 代表模型回答,其content字段为对话文本内容

不包含工具调用的精调数据样本示例如下,每行一条样本:

  • 无标注样例
{"messages":[{"role":"system","content":"你是一个专业的新闻摘要撰写助手,擅长使用简洁明了的语言来提炼核心信息。"},{"role":"user","content":"请根据下面的新闻生成摘要, 内容如下:据315晚会报道,...\n请生成摘要。"}]}

平台支持上传无标注样例,您可在平台上进行数据标注,标注方式包括在线标注、多人标注和众测标注。只有标注完成的数据集,才能被发布并用于训练。

  • 单轮对话(含标注)
{"messages":[{"role":"system","content":"你是一个AI学习助手。"},{"role":"user","content":"我想了解一下机器学习是什么。"},{"role":"assistant","content":"机器学习是人工智能的一个分支..."}]}
  • 多轮对话(含标注)
{"messages":[{"role":"system","content":"你是一个擅长写诗的人工智能助手。"},{"role":"user","content":"生成一首诗歌吧。"},{"role":"assistant","content":"好的,请问你想让这首诗歌关于什么主题呢?"},{"role":"user","content":"主题关于秋天。"},{"role":"assistant","content":"秋风轻抚过金黄的稻田,\n\n稻穗摇曳,似在低语绵绵。\n\n落叶纷飞,舞动秋的旋律,\n\n铺就一地斑斓,点缀金黄的画卷。\n\n远方的你,是否也在期盼?"}]}

平台支持上传多轮对话,但每个样例中的对话限制不超过150轮,超出部分将会被截断。

在多轮对话的监督式微调(SFT)中,有时会遇到某些轮次对话效果不理想的情况。为避免模型学习错误信息,可以通过为对话数据集配置 weight 字段,选择性地跳过特定轮次的回答,使其不参与损失函数(loss)的计算。weight为选填字段,默认为1,表示当前及历史轮次参与SFT精调,并对当前轮次计算loss;weight为0时,表示当前轮次不参与SFT精调的loss计算。

如下方示例中的第二轮,模型并未按照指定要求热情地回答问题。如直接使用全部数据进行精调,可能会影响最终的模型性能。通过将第二轮对话的weight设为0,可在SFT精调时跳过该轮次的模型回答,避免模型学习错误信息:

{"messages": [{"role": "user", "content": "可以请你用热情的语气回答我的问题吗?"}, {"role": "assistant", "content": "当然可以,请说出你的问题", "weight": 1}, 
              {"role": "user", "content": "法国的首都是哪里"}, {"role": "assistant", "content": "巴黎", "weight": 0}, 
              {"role": "user", "content": "请你用热情的语气认真回答"}, {"role": "assistant", "content": "哦!是巴黎,浪漫之都,那儿有很多漂亮的建筑,有机会你一定要去看看!", "weight": 1}]}

注意:含weight字段的数据仅在ERNIE Tiny、ERNIE Character、ERNIE Lite 0308、ERNIE Lite128K-0419和ERNIE Speed模型精调SFT中可用,该字段对其他模型开放的情况,请您时刻关注官方说明。

Function Call 工具调用

Role格式支持工具调用场景,实现了模型与外部工具、系统的连接,这对于增强模型推理效果或拓展AI助手的能力很有帮助。工具调用场景包括信息检索、数据库操作、知识图谱搜索与推理、操作系统、触发外部操作等。

image.png

使用包含工具调用的样本进行精调,可以让模型学习到更准确且稳定的工具调用方式和输出结果。工具调用场景的精调数据样本需要同时包含:1. tools (list, optional) 工具列表描述工具功能;2. messages (list, required) 对话列表说明期望的工具调用方式和输出结果。以下格式说明为结构清晰展开展示,数据上传时需参考示例模板,每行一条样本。

1. 如何描述工具功能

为了向模型描述外部工具库,需要向 tools (list, optional) 字段传入可以调用的工具列表。Function Call函数调用场景下,每个函数的对应参数如下表:

参数名称 类型 参数说明
type string 固定值function
function object 用于描述函数,包含namedescriptionparameters
name string 函数名称
description string 描述函数功能,模型会依据描述确定相应的函数调用方式
parameters object 函数所接受的参数,为一个 Json Schema 对象

如果需要模型完成计算月供的任务,外部函数calculate_loan_payment可以根据贷款本金、贷款年利率和贷款年限来计算月供,该函数可以描述如下,供模型选择调用:

"tools": [
    {
      "type": "function",
      "function": {
        "name": "calculate_loan_payment",
        "description": "计算每个月月供",
        "parameters": "{\"type\": \"object\", \"properties\": {\"principal\": {\"type\": \"number\", \"description\": \"贷款本金\"}, \"interest_rate\": {\"type\": \"number\", \"description\": \"贷款年利率\"}, \"loan_term\": {\"type\": \"integer\", \"description\": \"贷款年限\"}}, \"required\": [\"principal\", \"interest_rate\", \"loan_term\"]}"
      }
    }       
]

将数据样本上传至平台后,您可以在Tools列点击查看工具详情:

2. 期望的工具调用方式和输出结果

在包含工具调用的精调数据样本中,messages (list, required) 对话列表将包含更丰富的多角色对话互动。通过用户(user)、模型(assistant)和工具(tool)三种角色的交互来展示期望的工具调用方式和模型输出。

用户(user)发出指令,模型(assistant)发起工具调用任务并传入参数,工具(tool)执行调用并返回结果,最终模型(assistant)根据工具返回结果生成面向用户的回答。具体说明如下:

角色(role) 是否必须包含 角色说明
system 代表系统角色设定,其content字段为角色设定信息
user 代表用户输入,其content字段为对话文本内容
assistant 代表模型回答,其content字段为对话文本内容,其tool_calls字段为工具调用传参
tool 代表工具调用,其tool_call_res字段为工具调用返回结果

在Function Call函数调用场景下,模型(assistant)在调用工具传参时使用tool_calls字段,对应参数如下:

参数名称 类型 参数说明
id string 工具调用ID,需要和工具(tool)tool_call_id参数值一致
type string 固定值function
function object 用于描述目标调用函数,包含namearguments
name string 目标调用工具名称
arguments object 调用函数时的参数取值,为一个 Json Schema 对象

工具(tool)在调用工具返回结果时使用tool_call_res字段,对应参数如下:

参数名称 类型 参数说明
name string 目标调用工具名称
tool_call_id string 工具调用ID,需要和模型(assistant) tool_calls字段id参数值一致
content object 工具执行结果返回,为一个 Json Schema 对象
"messages": [
    {
      "role": "system",
      "content": "作为银行工作人员,回答下列问题"
    },
    {
      "role": "user",
      "content": "你好,我需要计算一下我每月的贷款还款额。我有一笔5万元的贷款,年利率5%,贷款期限为10年。你能帮我吗?"
    },
    {
      "role": "assistant",
      "content": "好的,我会帮助您计算",
      "tool_calls": [
        {
          "id": "19c443b42d3f5000",
          "type": "function",
          "function": {
              "name": "calculate_loan_payment",
              "arguments": "{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}"
            }
        }
      ]
    },
    {
      "role": "tool",
      "tool_call_res": [
        {
          "name": "calculate_loan_payment",
          "tool_call_id": "19c443b42d3f5000",
          "content": "{\"monthly_payment\": \"$530.33\"} "
        }
      ]
    },
    {
      "role": "assistant",
      "content": "根据所提供的信息,您每月的贷款还款额为530.33元"
    }
 ]

将数据样本上传至平台后,您可以在Assistant列点击查看工具调用详情:

3. 示例模板

工具调用场景单轮对话样例(需要含标注):

{"messages":[{"role":"system","content":"作为银行工作人员,回答下列问题"},{"role":"user","content":"你好,我需要计算一下我每月的贷款还款额。我有一笔5万元的贷款,年利率5%,贷款期限为10年。你能帮我吗?"},{"role":"assistant","tool_calls":[{"id":"19c443b42f3f3005","type":"function","function":{"name":"calculate_loan_payment","arguments":"{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}"}}]},{"role":"tool","tool_call_id":"19c443b42f3f3005","content":"{\"monthly_payment\": \"$530.33\"} "},{"role":"assistant","content":"根据所提供的信息,您每月的贷款还款额为530.33元"}],"tools":[{"type":"function","function":{"name":"calculate_loan_payment","description":"计算每个月月供","parameters":"{\"type\": \"object\", \"properties\": {\"principal\": {\"type\": \"number\", \"description\": \"贷款本金\"}, \"interest_rate\": {\"type\": \"number\", \"description\": \"贷款年利率\"}, \"loan_term\": {\"type\": \"integer\", \"description\": \"贷款年限\"}}, \"required\": [\"principal\", \"interest_rate\", \"loan_term\"]}"}}]}

为了完成用户指令,模型可以调用单个工具,也可以并行或串行调用多个工具。如需查看工具调用场景的单轮对话和多轮对话样例,请下载jsonl示例模板

若您的数据集包含工具调用场景,请上传已标注文本数据。 Function Call工具调用场景的数据集当前仅适用于ERNIE-Lite-128K-0722模型精调,暂不支持Weight字段参与训练。

数据文件要求

文件类型 无标注数据 有标注数据
jsonl文件
  • 文件内单条数据格式为 {"messages": [{"role": "user", "content": "用户输入内容"}]}。

  • 文件内单条数据格式为 {"messages": [{"role": "user", "content": "用户输入内容"}, {"role": "assistant", "content": "模型回答内容"}]}。
xlsx文件
  • 文件内单条数据在表格中为一行,由表头定义user。
  • 文件内单条数据在表格中为一行,由表头定义user1和assistant1。
csv文件
  • 文件内单条数据在表格中为一行,由表头定义user。
  • 文件内单条数据在表格中为一行,由表头定义user1和assistant1。
压缩包
  • 支持 tar.gz/zip 压缩包。
  • 文件编码支持UTF-8。

数据导入方式

创建数据集完成后,在数据集管理页面中,找到该数据集,点击右侧操作列下的“导入”按钮,即可进入导入数据页面。

您可以使用以下方式上传文本数据:本地导入、BOS导入、分享链接导入、平台已有数据集。

导入方式 文件限制
本地导入
  • 如选择对象存储BOS:对文件大小和数量无限制。
  • 如选择平台共享存储:单个文件/压缩包源文件大小,均不超过1G,所有文件数量不超过100。
BOS导入
  • 文件导入:单个文件/压缩包源文件大小,均不超过50G,所有文件数量不超过1000。
  • 目录导入:单个文件/压缩包源文件大小,均不超过50G,所有文件数量不超过1000。

分享链接导入
  • 压缩包导入:支持来自百度BOS、阿里OSS、腾讯COS、华为OBS的共享链接。
  • 每个文件/压缩前源文件大小在1G以内。
平台已有数据集
  • 支持选择相同数据格式的数据集版本。

自定义字段

messages (list, required)tools (list, optional) 字段为平台预留字段,会参与SFT模型精调。

除这些预留字段外,Role(user+assistant)数据集还额外支持您在数据中扩展自定义业务字段,为数据集样本附加多维度元信息,例如实际业务指标、终端用户反馈和分类标签,可在数据准备过程中指导您更好地进行数据洞察与处理。

注:自定义字段主要用于在数据洞察环节辅助样本筛选与处理,不会参与到模型精调环节;自定义字段的键名需由英文和数字组成,不支持中文字符

jsonl格式

在jsonl格式的SFT数据集中,您可以在每个样本对话后添加自定义字段 custom_fields (object, optional)

以知识问答场景的单轮对话数据集为例,您可以为每个样本附加问题领域和难度信息,在custom_fields中增加“area”和“complexity”两个键值对,代表两个自定义字段。

{"messages": [{"role": "user", "content": "什么是大语言模型?"}, {"role": "assistant", "content": "大语言模型(Large Language Model,简称LLM)是指使用大量文本数据训练的深度学习模型,能够生成自然语言文本或理解语言文本的含义,是自然语言处理领域的重要工具,可以处理多种自然语言任务"}], "custom_fields": {"area":"人工智能","complexity":"中等"}}
{"messages": [{"role": "user", "content": "请你证明费马大定理"}, {"role": "assistant", "content": "由于费马大定理的证明非常复杂且涉及高级的数学概念,我无法在这里给出一个完整的证明过程。"}], "custom_fields": {"area":"数学","complexity":"困难"}}
{"messages": [{"role": "user", "content": "热胀冷缩是什么导致的?"}, {"role": "assistant", "content": "热胀冷缩现象是物质的一种基本性质,其主要原因与物质内部的微观结构以及粒子间的相互作用有关。"}], "custom_fields": {"area":"物理","complexity":"简单"}}

xlsx和csv格式

您也可以选择在xlsx和csv格式的SFT数据集中添加自定义字段,数据集首行的列名为自定义字段的键名(需由英文和数字组成)。以xlsx格式为例,上述样本可以通过添加“area”和“complexity”两列,来代表自定义字段。

image.png

数据洞察

将完成上传后,在SFT数据洞察环节,您可以利用“area”字段统计问题领域分布,或利用“complexity”字段统计问题困难度分布,以帮助您更好地“诊断”SFT数据集,从而对数据进行更针对性处理。

image.png

您的自定义字段可能会包括实际业务指标、终端用户反馈或分类标签等。结合自定义字段进行筛选,您可以精准锁定感兴趣的样本,便于进一步编辑和处理,助力数据飞轮场景的精调迭代。

image.png

上一篇
导入Prompt+Response数据
下一篇
导入纯文本数据