修复 LLM 的 JSON 输出:处理来自 AI 的“准 JSON”

LLM 经常返回被 ```json 围栏包裹的 JSON,带有单引号、Python 字面量或未加引号的键。修复语法,严格校验,然后从清理后的输出推导 TypeScript 类型。

当你来到这里

某个 LLM 返回了 JSON.parse 会拒绝的 JSON。最常见的元凶是包裹整个文档的 markdown 代码围栏、单引号、未加引号的键、像 True/None 这样的 Python 字面量,以及字符串化的对象。先修复语法,然后在把结果交给你的应用之前进行严格校验。

LLM 输出的修复工作流

先运行修复 —— 它容忍围栏、单引号、未加引号的键、Python 字面量和尾随逗号。再进行校验,确认清理后的文本能正常往返。用清理后的树来推导类型或喂给你的应用。

一旦能解析,就推导类型

在 LLM 的输出通过校验后,推导 TypeScript 接口或 JSON Schema,这样下一次调用就有一个可供校验的契约。这就是修复一次和永远修复之间的区别。

标准方面即将到来的内容

两项即将到来的 JavaScript 提案对 LLM 的 JSON 工作流很重要:JSON.parse 源访问(在读取错误时把原始文本与值一同提供)和 JSON.parseImmutable。它们减少了每个应用中都存在的定制修复代码的数量。

推荐路径

粘贴 LLM 输出,清理它,为它定型。

    1. 工具:/ —— 粘贴 AI 输出,点击「修复并格式化」。
    1. 指南:/guides/repair-llm-json-output —— 处理围栏、引号、Python 字面量。
    1. 博客:/blog/repair-broken-json-in-javascript —— 用代码实现同样的工作流。
    1. 参考:/news/json-parse-source-access-baseline-2025 —— 即将到来的标准支持。