【すとらくちゃーどあうとぷっと】

Structured Output(構造化出力) とは?

最終更新:
💡 AIの返事を、アプリが読める決まった形に

AIの返答を、プログラムが扱いやすい決まった構造に整える仕組み。OpenAIのStructured Outputsでは、対応するモデル・設定でJSON Schemaに沿った出力を生成できる。形式を整えても、値の正しさや処理の完了まで保証するわけではない。

📌 このページのポイント
AIの返事を、決まった構造へスキーマname:文字列price:数値AIの生成指定した構造に沿う商品データの架空の例{ "name": "ノート", "price": 300 }形と、値の正しさは別だよ完了・拒否・価格の内容も確認
対応するモデル・設定で構造を指定する例。JSONの形が整っても、商品や価格の内容が正しいとは限りません。
ひよこ ひよこ
JSONで返して、とお願いするだけではだめ?
ペンギン先生 ペンギン先生
文章で頼むだけでもJSONを返すことはあるけれど、指定した項目や型を守る保証とは違うよ。OpenAIのStructured Outputsは、対応する設定でJSON Schemaを指定し、返す構造に制約をかける機能なんだ。
ひよこ ひよこ
項目や型を決めると、何が便利?
ペンギン先生 ペンギン先生
たとえば商品紹介からnameは文字列、priceは数値で取り出すように決めるよ。アプリは決まった項目を読めるので、毎回違う文章を読み解く処理を減らせる。抽出した価格が本当に正しいかは、別に確かめよう。
ひよこ ひよこ
JSONモードとは、違うの?
ペンギン先生 ペンギン先生
JSONモードはJSONの形式を整える機能で、決めたスキーマへの適合は保証しないよ。Structured Outputsでは、対応するJSON Schemaに沿わせる。すべてのスキーマ機能を使えるわけではないので、利用するモデルやAPIの仕様を確認するんだ。
ひよこ ひよこ
APIでは、どこに指定する?
ペンギン先生 ペンギン先生
OpenAIのResponses APIではtext.format、Chat Completionsではresponse_formatを使う方法があるよ。ツールへ渡す引数を整えたいなら、厳密なスキーマを使うfunction callingが適している。目的に合わせて選ぶんだ。
ひよこ ひよこ
返答は、いつでもそのまま使える?
ペンギン先生 ペンギン先生
形式が合っていても、内容の間違いはあり得るよ。また、安全上の拒否や出力上限による途中終了は、指定どおりのデータにならないことがある。完了状態と拒否を確認し、値に必要な検証をしてから使おう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「構造化出力」って出てきたら「AIの返事を、決まった項目と型で受け取る仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Structured Output」 = 構造化された出力
💬 Structuredは構造が決まっていること。製品の機能名や対応する形式は異なり、OpenAIの機能名はStructured Outputsだよ。

参考資料

← 用語集にもどる