LLM JSON 出力チェッカー
JSON Schema と LLM の応答を貼り付けると、すべての検証エラーを JSON パスと行番号つきで表示します。コードフェンス、末尾カンマ、シングルクォートや装飾引用符、コメント、Python の True/None は先に修正します。検証はブラウザ内の Ajv 8.20.0(draft-07、2019-09、2020-12)で行います。
使い方
- 左に JSON Schema を貼り付けます。name と schema で包んだ OpenAI の response_format オブジェクトは自動で中身を取り出します。
- 右にモデルの出力を受け取ったまま貼り付けます。コードフェンスや前後の説明文が付いていても構いません。
- 結果を確認します。各エラーに行と列(クリックでその位置へ移動)、JSON パス、内容が出ます。先に整形が必要だった場合は修正点が表示され、整えた JSON をコピーできます。
計算方法
まず出力をそのまま解析します。失敗したら、モデルがよく出す問題を取り除いて再試行します:Markdown のコードフェンス、JSON の前後の文、BOM、全角風の引用符(“ ” ‘ ’)、シングルクォート文字列、// と /* */ のコメント、末尾カンマ、Python の True・False・None。文字列の中身は変えません。
スキーマの検証には広く使われる JSON Schema バリデータ Ajv 8.20.0 を使い、何か貼り付けたときだけ読み込みます。$schema フィールドが 2020-12 や 2019-09 を示していればその草案を、それ以外は draft-07 を使います。最初の 1 件だけでなくすべてのエラーを報告します。
format キーワード(email、date-time など)は検証せず、リモートの $ref は取得しません。
貼り付けた内容は保存せず、どこにも送らず、ページのアドレスにも残しません。
LLM がよく間違えること
| 問題 | 例 | 自動修正 |
|---|---|---|
| コードフェンス | ```json { ... } ``` | あり |
| JSON の前後の文 | Sure! Here it is: { ... } | あり |
| 末尾カンマ | {"a": 1,} | あり |
| シングルクォート・装飾引用符 | {'a': 'b'} | あり |
| 必須フィールドの欠落 | {"title": "x"} | なし、報告 |
| 型の誤り | "rating": "5" | なし、報告 |
| 余分なフィールド | additionalProperties false で "author": "x" | なし、報告 |
最初から正しい出力を得るには
- 可能なら提供元の構造化出力モードを使いましょう。OpenAI の strict json_schema や Anthropic の structured outputs は出力をスキーマに縛ります。
- strict モードではすべてのプロパティを required に入れ、additionalProperties を false にする必要があります。スキーマがこの規則に沿っているか確認してください。
- strict モードなしで出力を解析するなら、ここのような整形の段階を置き、データを信用する前に検証しましょう。
よくある質問
問題なさそうな JSON が解析できないのはなぜ?
よくある原因は最後の要素の後のカンマ、JSON を囲むコードフェンス、チャット画面から入った装飾引用符です。このツールが修正し、何を変えたかを示します。
どの JSON Schema 草案に対応していますか?
既定は draft-07 で、$schema フィールドに書かれていれば 2019-09 と 2020-12 も使います。
データはアップロードされますか?
いいえ。解析と検証はブラウザ内で行い、テキストは保存も URL への反映もしません。
OpenAI の response_format オブジェクトをそのまま貼れますか?
はい。name と schema を持つオブジェクト、または json_schema.schema を持つオブジェクトは中身のスキーマを取り出して使います。