修復 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 —— 即將到來的標準支援。