ShareGPT数据集格式详解:JSON对话结构和字段含义的完整说明

雨敏君_9551

雨敏君_9551

2026-05-27

485人浏览

原创

sharegpt格式核心是conversations数组,含"from"(限human/gpt/function_call/observation)和"value"字段,system与tools为可选顶层字段,需严格匹配角色语义、json格式及dataset_info.json映射规则。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

sharegpt数据集格式详解:json对话结构和字段含义的完整说明

如果您正在为大语言模型微调准备多轮对话数据,但对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项内部。

dmap-jsapi-skill
dmap-jsapi-skill

DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。

下载

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"值。

相关专题

更多
OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

2026.10.15

0

18

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.8万人学习