1 ポイント 投稿者 doolayer 2025-08-20 | 2件のコメント | WhatsAppで共有

こんにちは!

AI モデルを活用していると、構造化された JSON 出力 がどうしても必要になる場面が多くあります。
私自身もいくつものプロジェクトを進める中で JSON 出力を活用する機会が頻繁にあり、毎回同じ不便さを感じていました。

LLM の構造化出力の不便な点は大きく 3 つありました。

  1. コードブロック(```json … ```)の処理
    ほとんどの LLM は JSON を返すとき、3 つのバックティックと json キーワードで囲んだコードブロックを使います。
    単純な正規表現でも処理できますが、毎回繰り返すのは面倒でした。パッケージレベルで 1 行で処理できればずっと便利です。

  2. ネストした引用符の問題
    JSON では文字列を二重引用符(")で囲む必要があります。ですが、文字列の内部にさらに引用符が現れる場合は \" のようなエスケープが必要です。
    LLM はこの区別をしばしば見落として不正な JSON を返します。この問題を自動で補正してくれる機能が必要でした。

  3. スマートクォート(Unicode の引用符)
    LLM が生成した文章には、よく “ ” のようなスマートクォートが含まれます。
    JSON 標準には適合しないため、これを通常の二重引用符(")へ一括変換できる必要があります。

調べてみると、Node.js ベースの ai-json-fixer プロジェクトはありましたが、Python エコシステムにはこれといったツールがありませんでした。

そこで作りました! (GPT 先生と一緒にです 笑)
pip で簡単にインストールして使えます。
pip install jsonquotefixer

ぜひ一度使って、どんどん厳しく批評してください(笑)

2件のコメント

 
onandon 2025-08-26

ipynbでGitHub上のサンプルが見やすく表示されるといいですね

 
doolayer 2025-08-20

時間計算量は n(シーケンス長)です!