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

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

💡 AIの返事を「型にはめる」魔法のルール
📌 このページのポイント
Structured Output(構造化出力) LLM 大規模言語モデル 自由テキスト出力 「価格は500円です」 → パースしにくい… 構造化出力(JSON) {"price": 500, "name": "商品A"} → そのまま使える! JSON Schema 型・必須 フィールド定義 スキーマで出力を制約 Constrained Decoding で形式を保証
Structured Outputのイメージ
ひよこ ひよこ

Structured Outputって何?AIの返事を決まった形にするってこと?

ペンギン先生 ペンギン先生

そうそう。普通にLLMに聞くと自由な文章で返ってくるけど、Structured Outputを使うと「必ずJSONで返して」「このフィールドは必須」みたいにフォーマットを強制できるんだよ

ひよこ ひよこ

なんでわざわざ形を決めるの?自由な方が便利じゃない?

ペンギン先生 ペンギン先生

人間が読むならそれでいいけど、プログラムがAIの返事を処理するときは決まった形じゃないと困るんだ。たとえば「商品名」「価格」「在庫」をAIに抽出させるとき、毎回違う書き方だとパースできないでしょ?

ひよこ ひよこ

具体的にはどうやって使うの?

ペンギン先生 ペンギン先生

OpenAIだとJSON Schemaを渡してresponse_formatに指定する方法があるよ。「nameは文字列、priceは数値、in_stockはブール値」みたいにスキーマを定義すると、AIがその通りに返してくれるんだ

ひよこ ひよこ

でもAIが形式を守れないこともあるんじゃ…?

ペンギン先生 ペンギン先生

実はStructured Outputモードでは、トークン生成時に文法的に正しい出力しか選ばれないように制約をかけてるんだ。これをConstrained Decodingと呼ぶよ。だから形式が壊れることはほぼないんだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Structured Output」って出てきたら「AIの返事をJSONとかの決まった形にする仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Structured Output」 = 構造化出力
💬 Structuredは「構造化された」、Outputは「出力」。AIの自由すぎる返事に構造というルールを与えるイメージだよ
← 用語集にもどる