JSON Schema を LLM の構造化出力スニペットに変換

JSON Schema を貼り付けて変換先を選ぶと、スニペットをブラウザー内で生成します。引き継がなかったキーワードを明示し、OpenAI の strict モードが使えるかどうかも確認します。プロバイダーへの送信はありません。

ブラウザ内でローカルに実行
このツールの処理はすべてブラウザ内で行われます。KivTools が入力内容をアップロード・保存したり、外部 API に送信したりすることはありません。
JSON SchemaLLM に返してほしいオブジェクトの JSON Schema を貼り付けてください。このツールはスキーマを変換するだけで、プロンプト・スキーマ・API キーはどこにも送信しません。
統合スニペット

JSON Schema を LLM 出力スニペットに変換する手順

このページは JSON Schema を読み取り、各プロバイダーが構造化出力に求める設定を書き出します。OpenAI の response_format、Anthropic のツール定義、Gemini の generationConfig、TypeScript の型のいずれかです。変換はブラウザー内でスキーマの木をたどるだけで、プロバイダーへの接続も API キーも使いません。

4 つのターゲットは同じキーワードを受け取るわけではないため、選んだターゲットが引き継げないキーワードはステータス行に列挙され、スニペットからは外れます。$ref や default が落ちるとモデルが返せる内容が変わるので、リクエストに貼る前にこの行を確認してください。

  1. 左の入力欄に JSON Schema を貼り付けるか、「サンプルを読み込む」でオブジェクト・enum・入れ子の配列を含む例を読み込みます。
  2. ターゲット(OpenAI 構造化出力、Anthropic ツール入力スキーマ、Gemini レスポンススキーマ、TypeScript の型)を選びます。
  3. コード側のツール名やインターフェース名に合わせて、スキーマ名を調整します。
  4. 「スニペットを生成」を押し、ステータス行を読みます。省略されたキーワード、OpenAI の strict モードが使えたか、名前を調整したかが表示されます。
  5. 結果をコピーまたはダウンロードし、次のスキーマに移る前に「クリア」で空にします。

各ターゲットが受け取るもの、この変換が引き継がないもの

各ターゲットが受け取るもの

OpenAI には response_format オブジェクトと json_schema ブロックを出力します。strict を true と書くのは、スキーマ内のすべてのオブジェクトが additionalProperties を false にし、すべてのプロパティを required に並べている場合だけです。OpenAI の strict モードが受け取れるのはその形だからです。それ以外では strict: false とし、理由をコメントで残します。

Anthropic には input_schema に変換済みスキーマを持つ tool オブジェクトを出力し、tools 配列にそのまま渡せます。Gemini には型を大文字にした responseSchema を出力し、const は単一値の enum に、null 許容のユニオンは nullable に変換します。TypeScript にはプロパティ名が JSON のキーと完全に一致する interface を出力します。識別子として無効なキーは引用符で囲み、type: ["string","null"] のようなユニオンはそのまま残し、ルートがオブジェクトでない場合は export type のエイリアスにします。

引き継がないキーワード

合成と参照のキーワードは解決器が必要なため、$ref、$defs、anyOf、oneOf、allOf、not、if/then/else、patternProperties、prefixItems はどのターゲットにも引き継ぎません。OpenAI と Anthropic の出力が保持する制約(pattern、format、minimum、maxLength など)は、より狭いスキーマしか受け取らない Gemini では通知されます。

入れ子はルートから 8 階層までたどり、それより深い部分は空のスキーマに置き換えてステータス行で知らせます。TypeScript には minLength や pattern のような制約を書く場所がありません。型は形を表すもので検証はしないため、interface には含まれません。

名前・失敗時・プライバシー

スキーマ名は英数字・ハイフン・アンダースコアに整形します。空欄なら structured_response を使い、64 文字を超える名前はプロバイダー向けターゲットでは短縮し、TypeScript では有効な識別子にします(先頭が数字なら _123report)。テキストを変更した場合は、実際に使った名前をステータス行に表示します。

スニペットを生成できない場合(空入力、壊れた JSON、配列、type も properties もないオブジェクト)は理由を示し(JSON エラーは行と列付き)、出力欄を空にします。古いスニペットを今回の結果と取り違えることはありません。スキーマ、生成コード、名前はブラウザーの外に出ません。

最近使ったツール: