json_repair: 一个使用启发式方法和模式引导来修复来自 LLMs 和 APIs 的格式错误的 JSON 的 Python 库

json_repair: 一个使用启发式方法和模式引导来修复来自 LLMs 和 APIs 的格式错误的 JSON 的 Python 库

它解决了什么问题

json_repair 旨在处理在从 LLMs、 APIs 或日志中接收数据时经常出现的格式错误的 JSON 字符串。它修复常见的语法错误——例如缺失的引号、错位的逗号、未闭合的括号以及多余的散文内容——这些错误通常会导致标准的 JSON 解析器(如 json.loads())失败。

它是如何工作的

该库基于 BNF 定义解析 JSON 并应用启发式方法来纠正错误。它会自动添加缺失的括号、为缺失引号的字符串添加引号,并清理空格或换行符。默认情况下,它首先尝试使用标准库的 json.loads() 进行严格解析,只有在解析失败时才会回退到修复解析器。

它是为谁准备的

构建依赖于 LLM 生成的 JSON 的 AI 应用的开发者,以及处理日志或用户输入等无法保证严格 JSON 合规性的不可靠数据源的开发者。

亮点

  • 即插即用替换: 可以直接用作 json.loads()json.load() 的直接替代品。
  • 模式引导修复: 支持 JSON Schema 或 Pydantic v2 模型来填充缺失值、强制转换标量并丢弃不允许的属性。
  • 流式传输支持: 包括 stream_stable 模式,以便在流式输出期间保持部分 JSON 的稳定。
  • 严格模式: 提供 strict=True 选项,在出现结构性问题时抛出错误而不是进行修复。
  • CLI 工具: 提供命令行界面,用于修复 JSON 文件或通过 stdin 管道传输数据。

Sources