LLMで生成された無効なJSONをPythonのjson_repairで修正する
Pythonのjson_repair
モジュールでLLMが出力した不正なJSONを修正する
AIが急速に進歩する中で、大規模言語モデル(LLM)は構造化データの生成に欠かせない存在となっています。しかし、これらのモデルは、その目覚ましい能力にもかかわらず、時に構文的に誤っていたり、形式が崩れたJSONを出力することがあり、これが自動化されたワークフローやデータ処理パイプラインを阻害するという共通の課題があります。
ここで登場するのが、この問題に特化して設計された、強力かつ軽量なPythonモジュールjson_repair
です。不正なJSON文字列を修正するために開発されたjson_repair
は、LLMの出力データを扱うあらゆる人にとって、データの一貫性とスムーズな運用を確保するための非常に価値あるツールです。
なぜjson_repair
が不可欠なのか?
LLMは、その性質上、JSON出力にごくわずかなエラーを混入させることがあります。例えば、角括弧の欠落、エスケープされていない文字、あるいは予期せぬ余分な単語などです。これらは些細な間違いに見えるかもしれませんが、標準的なjson.loads()
メソッドではJSON文字列を解析不能にしてしまい、エラー発生やワークフローの停止につながる可能性があります。
json_repair
は、これらの不完全さをインテリジェントに修正するために介入します。単にjson.loads()
をtry-except
ブロックで試すのとは異なり、json_repair
は一連のヒューリスティックを用いてJSON文字列を積極的に修復しようとします。これにより、以下のことが可能になります。
- 構文エラーの修正: 引用符の欠落、カンマの位置間違い、エスケープされていない文字、不完全なキーと値のペアなどを修正します。
- 不正な構造の修復: カンマや括弧など、必要な要素を追加することで、不完全または破損した配列やオブジェクトを処理します。
- 余分な文字のクリーンアップ: 有効な構造を維持しつつ、コメントなどJSON以外の文字を含むJSONを、それらの文字を除去することで処理します。
- 欠落値の自動補完: 欠落している値に対して、空文字列や
null
などの妥当なデフォルト値を自動的に挿入します。
OpenAIの構造化出力機能(GPT-4oのJSONモードなど)のような進歩があっても、json_repair
はその関連性を保ち続けています。開発者が指摘するように、構造化された出力でさえ、時には堅牢な修復メカニズムを必要とする例外的なケースがあるからです。
json_repair
の使い方
json_repair
の使い方は簡単です。pipでインストールできます。
pip install json-repair
インストール後、Pythonコードに簡単に組み込むことができます。
from json_repair import repair_json, loads, load
bad_json_string = "{'name': 'Alice', 'age': 30," # 閉じ波括弧が欠落
good_json_string = repair_json(bad_json_string)
print(good_json_string) # 出力: {"name": "Alice"}