ツール
入力
結果
結果はここに表示されます。Structured Outputs も Function Calling も JSON Schema を必要としますが、ネストした API レスポンスのスキーマを手で書くのは時間がかかり、細かな間違いも起こりがちです。実際のサンプル(できれば複数のレコードを含む配列)を貼り付ければ、スキーマが返ってきます。推論は見つけたすべての例をマージするので、あるレコードに欠けているキーは任意項目に、ときどき null になる値は nullable に、常に ISO タイムスタンプのフィールドには format date-time が付きます。strict モードでは、結果を OpenAI の Structured Outputs が受け付けるサブセットに書き換えます。
動作のしくみ
- 推論は quicktype ではなくこのツール独自のコードで行います。quicktype のスキーマは、ネストしたオブジェクトを推測した型名の $ref 定義の奥に隠してしまうからです。
- $schema 行には 2020-12 か draft-07 を選べます。オブジェクトはインラインで書き出すため、それ以外の部分はどちらでも同じです。
- strict モードでは、すべてのプロパティを required に並べ、任意項目を nullable にし、すべてのオブジェクトを additionalProperties false で閉じ、オブジェクト以外のルートは items キーの下に包み、uri など OpenAI がドキュメントに記載していない format を削除します。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- ほぼすべてのレコードにあるフィールドが任意項目になるのはなぜですか?
- 少なくとも 1 つのサンプルでそのフィールドが欠けていたからで、スキーマはデータが実際にどうだったかを表しています。そのフィールドが本当に必須なら、欠けているサンプルのほうがバグです。そのレコードを入力から取り除くか、生成後に手作業で required リストにキーを追加してください。
- OpenAI の strict モードでは何が求められますか?
- すべてのプロパティが required に含まれ、すべてのオブジェクトで additionalProperties が false に設定され、ルートは配列や anyOf ではなくオブジェクトである必要があります。任意の値は null を含む型として表現します。サポートされる文字列の format は一部だけで(date-time、date、time、duration、email、hostname、ipv4、ipv6、uuid)、このツールが strict モードで uri を削除するのはそのためです。
- strict モードで空の配列について警告されるのはなぜですか?
- 空の配列からは要素について何も推論できず、strict モードでは何でも許す items スキーマを受け付けられないからです。サンプル内のその配列に現実的な要素を 1 つ入れて、もう一度実行してください。strict モード以外では、その配列は制約のない items スキーマで書き出されます。
背後にあるオープンソース
このツールは外部ライブラリを同梱しない独自実装です。glideapps/quicktype(Apache-2.0)はコードとして同じ仕事をします。自分のプログラムで同じことをしたいなら、Web ページを呼ぶのではなくそちらから始めてください。
glideapps/quicktype別の呼び方
- json schema 生成
- json から json schema
- json schema 自動生成
- structured outputs スキーマ
- function calling スキーマ
- openai strict mode