当前位置: 首页 > news >正文

大模型中的格式修复、json_repair示例

文章目录

    • json_repair
        • json_repair和repair_json的区别?
      • repair_json()方法
        • repair_json()方法-保留中文
        • repair_json()方法-性能优化
        • load()方法
      • json_repair命令
      • 生产最优实践
        • 错误的json-示例(拿来做测试)
    • 报错
        • 报错 json_repair file.json Error: 'gbk' codec can't decode byte 0x80 in position 108: illegal multibyte sequence

格式修复在大模型生命周期中处于什么位置呢?如下标黄的位置。

1、Prompt 阶段:要求模型返回 JSON
2、生成阶段:LLM 输出文本(可能带 JSON 错误)
3、格式修复
提取 JSON 片段
json_repair 修复格式(补全、规范化)
再用 json.loads() 解析

4、(可选)自我评估 / 校验:
解析后,再让模型检查内容正确性(这才是自我评估)

总结:
所以格式修复,是在生成后、评估前的一个环节,而且可能多次重复生成、修复的动作。

json_repair

json_repair和repair_json的区别?

json_repair是包名。
repair_json()loads()json_repair包里的方法。

一般这么用,代码:

importjson_repairfromjson_repairimportrepair_json json_repair.repair_json(字符串)# 这么写是不是感觉怪怪的repair_json(字符串)# 所以一般这么写json_repair.loads(字符串)# 这个就没问题了,都能看懂

repair_json()方法

repair_json()方法-保留中文

中文默认会被转义,参数中加ensure_ascii=False表示不转义(即保留中文)。

默认会转义中文:

chinese_json="{'name': '张三', 'city': '北京'}"print(repair_json(chinese_json))# 输出: {"name": "\u5f20\u4e09", "city": "\u5317\u4eac"}

添加ensure_ascii=False,不进行转义,即保留中文(推荐用这种),代码:

chinese_json="{'name': '张三', 'city': '北京'}"print(repair_json(chinese_json,ensure_ascii=False))# 输出: {"name": "张三", "city": "北京"}
repair_json()方法-性能优化

添加skip_json_loads=True参数跳过验证,可以提升性能。

load()方法

load()方法将字符串解析为对象,可以直接对象化操作,例如obj.key等。

json_repair命令

json_repair不但是个包,还是个命令。

修复文件-不会改该文件内容,会打印出来: json_repair file.json 修复文件-输出到新文件: json_repair file.json-ofile_right.json 修复文件-在原文件上修改: json_repair file.json-i

生产最优实践

json_repair是容错性很强(兜底能力极强)的工具,它会尝试尽量解析出来,哪怕有损解析。

生产中通常这么做:
1、json.loads()先做标准解析
2、json_repair.loads()再做容错解析
3、语义校验
(1)开启日志校验判断长度是否损失过多
(2)获取关键字段,看是否丢失
4、重试逻辑
将原json+第3步中的错误提示(如长度损失过多,或缺少content字段),拼接后让大模型再生成,可以加重试次数限制。

错误的json-示例(拿来做测试)

这个是个格式有错误的json:

{"name":'张三',"age":25,"skills":["Python","Java","Go",],// 这是一个多余的逗号"active":True,"bio":"这是一个全栈开发者"}

报错

报错 json_repair file.json Error: ‘gbk’ codec can’t decode byte 0x80 in position 108: illegal multibyte sequence

一般是在pycharm等ide中,默认编码是utf-8,就会出现这个错误。

解决方案:
用txt打开file.json,另存为,编码选ansi,然后json_repair这个新文件即可。

http://www.jsqmd.com/news/619659/

相关文章:

  • 【信息科学与工程学】【管理科学】第六十篇 企业运营运作表02
  • 从Keep到微信:我是如何用小程序Skyline复刻主流跑步App核心功能的
  • AI原生系统吞吐量骤降之谜(GPU上下文切换+Token缓存伪共享深度拆解)
  • OpenClaw替代方案:Phi-3-mini-128k-instruct与AutoGPT的实测对比
  • 参数化三相电流/电压波形发生器,主要用于**电机控制、变频器测试、堵转实验**等场景。它根据用户设置的“工况参数”,生成带有相位差的三相正弦波信号,并支持“正常工况”和“堵转”模式
  • MogFace-large教程:如何修改webui.py源码以支持视频流实时检测
  • 如何快速掌握专业咖啡烘焙软件:Artisan烘焙数据分析工具完整指南
  • 右值和右值引用学习笔记
  • 别再浪费定时器了!用STM32F4的TIM4输出比较模式,一个定时器搞定四路独立PWM(附步进电机控制代码)
  • 2026年工业仿真动画优质服务商推荐榜:三维动画、机械动画、设备动画、三维仿真动画、工艺原理动画公司,幻像空间领衔精品动画制作 - 海棠依旧大
  • cmake之旅(2)
  • STM32嵌入AI模型实战指南
  • 打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)夹
  • 避坑指南:QTableWidget中使用QCheckBox时容易忽略的5个细节问题
  • 避坑指南|2026靠谱GEO服务商推荐 - 品牌测评鉴赏家
  • Spring Boot + Redis 缓存优化方案,解决 Redis 缓存的三大经典问题
  • 学习dp入门
  • 3步打造轻量Windows 11:tiny11builder精简系统实战指南
  • SGLang实战:如何用Python DSL编写带分支的LLM生成任务(附完整代码)
  • 喔去,litellm 竟然被投毒了,赶紧检查你的机器中招了没有侥
  • 物联网云平台工业设备对接远程控制数据采集视频接入开源可二次开发 该物联网云平台使用 Java ...
  • 如何用OnmyojiAutoScript实现阴阳师全自动托管:每天节省2小时游戏时间的完整指南
  • 互联网企业项目管理的核心挑战
  • 基于MPC的模型预测轨迹跟踪控制联合仿真simulink模型+carsim参数设置 效果如图
  • 短剧付费转化系统设计:试看 + 阶梯定价 + 会员锁客全链路
  • 智慧农业无人机数字孪生系统源码:基于WebGL的3D农场可视化平台
  • 我想在豆包做广告,联系谁?第三方豆包优化方案助您精准获客 - 品牌2026
  • 扔给 AI 自动部署!Wazuh 安全监控平台 - 一键部署提示词
  • 【可信计算】TPM2-tools实战:从文件度量到完整性验证
  • SpringSecurity(3)学习内容