mangiucugna/json_repair

Repair malformed JSON from LLMs, APIs, logs, and user input in Python.

What it solves

json_repair 是為了處理在從 LLM、API 或日誌取得資料時常見的格式錯誤 JSON 字串而設計。它會修正常見的語法錯誤——例如缺少引號、逗號位置錯誤、未關閉的括號、以及雜散的文字——這些錯誤通常會讓標準的 JSON 解析器如 json.loads() 失敗。

How it works

此函式庫依據 BNF 定義解析 JSON,並套用啟發式演算法來校正錯誤。它會自動加入缺少的括號、為缺少引號的字串加上引號,並清理多餘的空白或換行。預設情況下,會先嘗試使用標準函式庫的 json.loads() 進行嚴格解析,只有在失敗時才會退回到修復解析器。

Who it’s for

適用於開發依賴 LLM 產生 JSON 的 AI 應用程式的開發者,以及處理如日誌或使用者輸入等不可靠資料來源、無法保證嚴格 JSON 合規性的情境。

Highlights

  • Drop-in Replacement: 可直接取代 json.loads()json.load() 使用。
  • Schema-Guided Repair: 支援 JSON Schema 或 Pydantic v2 模型,以填補遺漏值、強制轉換標量,並剔除不允許的屬性。
  • Streaming Support: 包含 stream_stable 模式,可在串流輸出時保持部分 JSON 的穩定性。
  • Strict Mode: 提供 strict=True 選項,在結構問題上拋出錯誤而非自動修復。
  • CLI Tool: 提供命令列介面,可修復 JSON 檔案或透過 stdin 管道資料。