メインコンテンツへスキップ

構造化出力

こうぞうかしゅつりょく

LLM の答えを JSON のような決まった形で出させることで、表やプログラムでそのまま使える

構造化出力とは、LLM の答えを、JSON のような決まった形で出させることを指す。項目の名前や型や選べる値をスキーマ (形の定義) として渡すと、モデルはその形に合う答えだけを書くよう制限される。分類や抽出の結果を表やプログラムで使う時に、毎回の形がそろい、読み込みの失敗が減る。ただし形が守られても中身が正しいとは限らないため、値は自分のプログラムや正解の分かる例で確かめる。

決まった形で答えさせること

構造化出力とは、LLM の答えを、JSON (項目名と値を決まった書き方で並べたデータの形) のような決まった形で出させることを指す。表に入れる、プログラムで読む、他の仕組みに渡す、といった使い方では、答えの形が毎回同じでないと困る。たとえば問い合わせの文から、種類、急ぎかどうか、商品名の 3 項目を取り出す仕事である。

指示で「JSON で答えて」と頼むだけでも、形はそろいやすい。ただし Anthropic の説明では、それだけでは書き方の誤り、必須の項目の抜け、型の食い違いが起き得る。

形を指定する仕組み

多くの API には、答えの形を指定する機能がある。項目の名前、型 (数字か文字か)、選べる値の一覧を、スキーマ (形の定義) として渡す。モデルはその形に合う答えだけを書くよう制限される。

OpenAI は、この機能が渡したスキーマに必ず従う答えを出させ、必須の項目の抜けや、決めた選択肢に無い値を防ぐとしている。Anthropic と Google にも、同じ目的の機能がある。形の指定に使えるスキーマの書き方には、サービスごとに制限がある。

形が正しくても中身は確かめる

形が守られても、中身が正しいとは限らない。Google の手引きは、出力の文法が正しい JSON でも、値は自分のプログラムで必ず確かめるよう勧めている。形は合っているのに意味が違う答えへの備えも求めている。確かめ方は次の通りである。

  • 値が決めた範囲や一覧に入っているかを調べる
  • 正解の分かっている例で、取り出した値を突き合わせる
  • 形や値が外れた時は、もう一度送り直す

項目名を短くし、要らない項目を除くと、出力のトークンも減る。

このページは役に立ちましたか?

関連する用途