ShareGPT数据集格式详解:JSON对话结构字段含义

2026-05-29阅读 0热度 0
share

准备为大型语言模型进行多轮对话数据的微调时,ShareGPT格式几乎是绕不开的关卡。坦白讲,这个格式的JSON结构与字段定义并不复杂,但很多人在字段命名、嵌套层级或角色语义上踩过坑。今天就把这套格式的完整逻辑拆解清楚,确保你拿到的数据规范稳定,训练过程不出异常。

以下七点,逐一讲透。

一、核心结构:conversations 数组

ShareGPT格式的骨架就是顶层字段conversations,它必须存在且值为消息对象数组,按时间顺序排列,每条消息代表一次发言,构成完整的对话流。这是模型学习上下文连贯性的基础。

1、先确认数据根对象里包含"conversations"键,且值是一个JSON数组。

2、再检查数组每个元素是否都包含"from""value"两个键。

3、特别注意"from"字段的取值——只允许"human""gpt""function_call""observation"四种。不要写成"user""assistant"(除非在dataset_info.json中已做显式映射)。

二、发言者标识:from 字段的语义规则

from字段定义谁在说话,直接影响模型对对话逻辑的建模方式。不同角色触发不同的处理路径:例如function_call必须配合tools字段才能启用工具调用能力。

1、"human"代表真实用户的输入,必须出现在每轮对话的起始位置,或者上一轮"gpt"响应之后。

2、"gpt"代表模型生成的自然语言回复,必须紧跟在"human""observation"之后。

3、"function_call"表示模型决定调用外部工具,其value必须是合法JSON字符串,且字段名必须与tools中声明的name严格一致。

4、"observation"表示工具执行返回的原始结果,value就是工具输出的原始JSON或文本,模型不能自行改写这部分内容。

三、内容承载:value 字段的格式约束

value字段存的是实际内容,格式必须与from角色语义匹配。格式出错时,微调阶段要么tokenization异常,要么直接训练崩溃。

1、当from"human""gpt"时,value应为纯UTF-8文本,禁止包含未转义的双引号、换行符或控制字符。

2、当from"function_call"时,value必须是单行JSON字符串,且符合对应tool的parameters schema。例如{"name": "get_weather", "arguments": {"location": "北京"}}

3、当from"observation"时,value应为工具返回的原始响应体,如果是JSON则保持原样,不要添加任何额外说明文字。

四、可选系统指令:system 字段的作用范围

system字段是字符串类型,用于设定全局对话背景或行为约束,只在当前样本内生效,不影响其他样本。它不参与对话轮次序列,但在模型输入拼接时通常放在conversations之前。

1、确认system字段是顶层键,与conversations同级,而不是嵌套在某个conversations项内部。

2、确保system值为非空字符串,长度建议控制在512字符以内,避免截断或attention稀释。

3、如果想禁用system提示,直接省略该字段即可,不要设成空字符串或null

五、工具描述声明:tools 字段的结构要求

tools字段是字符串类型,其值为一个JSON数组的字符串化表示,用来向模型声明可用工具集合及其调用规范。只有当消息中包含"function_call""observation"时才必需。

1、验证tools值能否被json.loads()成功解析为Python列表,且列表中每个元素都是字典。

2、检查每个tool字典是否包含"name"(字符串)、"description"(字符串)和"parameters"(字典)三个必需键。

3、确认"parameters"字典中"properties"的每个子字段的"type"值属于"string""number""boolean""object""array"之一。

六、数据集注册:dataset_info.json 中的字段映射

在LLaMA-Factory这类训练框架中,dataset_info.json必须明确定义ShareGPT格式各字段与框架内部列名的映射关系,否则加载时会报“column not found”错误。

1、确认"formatting"字段值为"sharegpt",而不是"alpaca""plain_text"

2、检查"columns"对象中"messages"键指向"conversations""system"键指向"system""tools"键指向"tools"

3、验证"tags"对象中"role_tag""from""content_tag""value""user_tag""human""assistant_tag""gpt"

七、典型错误示例与修正

常见格式错误会导致数据加载失败或训练异常,以下高频问题及对应修正动作,逐一核对即可。

1、错误:conversations数组中某条消息缺失value字段——立即补全该消息的"value": "",不可留空或删除整条消息。

2、错误:system字段值为null而非字符串——将"system": null改为"system": ""或直接移除该键。

3、错误:tools字段为JSON对象而非JSON字符串——将"tools": [{...}]改为"tools": "[{...}]",确保其为字符串类型。

4、错误:from字段使用"user"而非"human"——全局替换所有"from": "user""from": "human",并同步更新dataset_info.json中的"user_tag"值。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策