ShareGPT格式核心是conversations数组,含"from"(限human/gpt/function_call/observation)和"value"字段,system与tools为可选顶层字段,需严格匹配角色语义、JSON格式及dataset_info.json映射规则。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您正在为大语言模型微调准备多轮对话数据,但对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项内部。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
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"值。

















