讲师中心 微信公众号
AI工具推荐 视频效率加速

ShareGPT格式与OpenAI对话格式的转换:不同数据格式之间互转的代码实现

胖静姑娘_2854

胖静姑娘_2854

发布时间:2026-05-23 17:56:36

|

995人浏览过

|

来源于php中文网

原创

ShareGPT与OpenAI格式可双向转换:ShareGPT→OpenAI需映射from为role、value为content,并补system;OpenAI→ShareGPT则反向映射role为from、content为value,丢弃非标字段。

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

sharegpt格式与openai对话格式的转换:不同数据格式之间互转的代码实现

如果您需要在ShareGPT格式与OpenAI官方对话格式之间进行双向转换,可能是为了适配不同训练框架、微调工具或API接口要求。以下是实现这两种格式互转的具体方法:

一、ShareGPT → OpenAI格式的转换

ShareGPT格式以messages数组为核心,但每个message对象包含from(角色标识)和value(内容)字段,而OpenAI格式要求role为system/user/assistant,content为字符串。转换需重映射字段并处理特殊结构(如多轮中的tool_calls缺失、无system消息时补默认system等)。

1、读取原始ShareGPT JSON文件,解析为Python字典。

2、遍历messages列表,将from字段映射为role:若from为"human"则设为"user",若from为"gpt"则设为"assistant",若from为"system"则设为"system"。

3、提取每条消息的value字段作为content值,构造新字典{"role": "...", "content": "..."}。

4、若原messages中首条非user消息为system类型,则保留;若无system消息且首条为user,则在列表开头插入{"role": "system", "content": ""}。

5、将转换后的messages列表封装为{"messages": [...]},写入新JSON文件。

二、OpenAI → ShareGPT格式的转换

OpenAI格式中role字段严格限定为system/user/assistant,而ShareGPT使用from字段且不支持tool_calls或function调用结构。转换需忽略非标准字段,并将role映射回from,同时确保value字段与content完全一致,不引入额外换行或空格。

1、加载OpenAI格式JSON,提取顶层messages数组。

2、对每条消息,将role字段值转为from:role为"user"对应"human",role为"assistant"对应"gpt",role为"system"对应"system"。

3、将content字段原样赋给value字段,不作trim或正则清洗,确保换行符和缩进与原始content完全一致。

4、丢弃所有非role/content字段(如tool_calls、function_call、name等)。

5、将转换后消息列表直接作为根对象写入JSON文件,不添加任何外层包装字段如conversations或data。

三、使用Python脚本批量处理多个文件

当存在大量对话JSON文件需统一格式化时,可编写主控脚本协调两类转换逻辑,并通过命令行参数指定方向(--to-openai 或 --to-sharegpt)及输入输出路径。

1、导入argparse模块,定义--input、--output、--direction三个必需参数。

Openai Whisper 1.0.0
Openai Whisper 1.0.0

使用 Whisper CLI 进行本地语音转文字(无需 API 密钥)

下载

2、根据--direction值调用对应转换函数,对--input路径下所有.json文件逐个处理。

3、对每个文件执行转换后,保存至--output路径下同名文件,保留原始文件名与目录层级结构。

4、遇到解析失败的文件,记录错误路径到error.log而不中断流程。

5、输出完成统计,例如“成功转换127个文件,跳过3个无效JSON”。

四、处理含图片或base64内容的ShareGPT扩展字段

部分ShareGPT导出数据包含from: "human"且value中嵌有<img src="data:image/png;base64,..."/>标签。OpenAI格式不支持HTML或内联图片,因此必须剥离或替换为文本描述,否则会导致API拒绝或训练崩溃。

1、在ShareGPT→OpenAI转换前,检测value字段是否包含<img 或 data:image/ 字符串。

2、若存在,提取base64前缀后的MIME类型(如png/jpg),生成占位文本"[Image: PNG image]"并替换整个img标签。

3、保留原始base64字符串至sidecar.json元数据文件,避免丢失图像信息用于后续人工校验。

4、在OpenAI→ShareGPT转换中,若content含类似"[Image:"文本,则反向注入img标签,MIME类型从sidecar.json中还原。

五、验证转换结果一致性的断言检查

为防止字段错位、顺序错乱或编码污染,应在每次转换后运行校验逻辑,确保语义未损。校验不依赖全文相等,而是比对关键结构特征。

1、加载原始与目标文件,分别提取messages数组长度、首条role/from值、末条role/from值。

2、逐条比对:user消息的content/value是否完全相同(忽略前后空格);assistant消息是否均非空且不含控制字符。

3、检查是否存在连续两条user消息,这在两种格式中均为非法结构,应触发警告并终止保存。

4、对每条消息计算content/value的UTF-8字节长度,差异超过5%则标记为潜在截断。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

20

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

20

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

20

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

20

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

20

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

140

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

20

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ChatGPT入门手册
ChatGPT入门手册

共0课时 | 0人学习

Codex官方文档
Codex官方文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn