Gemini・GPT-4o・Ollamaの構造化出力比較
元記事公開日: -
出典: https://zenn.dev/7shi/articles/20250704-structured-output
9種類のLLMに文章の5段階評価をJSON形式で出力させ、プロンプト、スキーマdescription、フィールド名への指示の置き方を5形式で比較した。重要な指示をスキーマdescriptionだけに置く形式は安定せず、プロンプトでキーと評価基準を対応付ける方式は多くのモデルで平均1.00となった。
背景
LLMにJSON形式の構造化データを出力させる挙動は、プロンプト内の指示形式に依存し、モデルごとに予期しない応答が起こり得る。評価対象には、基準を示さなければ比較的高評価になる教育とAIに関する文章を用意し、本文と無関係な5つの評価基準を設定した。各項目は本文に該当情報がないため、指示に従えば全項目で1点になる設計である。
要望・目的
評価基準をプロンプト、JSONスキーマのdescription、フィールド名のどこに置くと、LLMが指示をどの程度解釈して出力するかを比較する。無関係な評価基準に対する平均スコアの変動を使い、指示への準拠度を測定する。スコアが1点より大きい場合は、評価基準を誤解または無視した挙動として扱う。
実装・実施内容
Pythonスクリプトeval.pyで、JSONスキーマとプロンプトを生成し、指定モデルへ構造化出力を要求した。応答をJSONとして読み込み、各評価項目のscoreから平均値を算出した。評価基準を置かないベースライン、descriptionのみ、フィールド名のみ、プロンプトとフィールド名の二重指示、プロンプト内でキーと基準を対応付ける方式の5形式を実行した。
AIサービス・システム
Gemini、OpenAI、Ollamaへのアクセスにはllm7shiを使用し、Gemini 2.5 Flash、GPT-4o、GPT-4.1、o3、Qwen3、Gemma 3などを比較した。各モデルは評価対象の文章について、reasoningと1〜5点のscore、全体の理由をJSONで出力する。reasoningをscoreより先に生成させ、スコア算出の検討内容の確認とデバッグに使った。
結果・効果
Gemini 2.5 FlashとGPT-4oはdescriptionのみの指示で平均1.80、GPT-4o miniは2.60となった一方、フィールド名のみ、二重指示、キー対応指示では各1.00となった。Qwen3とGemma 3ではOllamaの仕様上descriptionが無視される挙動も確認された。重要な指示はスキーマdescriptionだけに置かず、プロンプトまたはフィールド名で直接示す必要がある。