一文定義
LLMにJSON・XML・Markdownなど特定のフォーマットで出力させる手法。Outlines・Guidance・instructor等のライブラリで制御する。
詳細解説
構造化生成(Structured Generation)とは、LLMの出力を特定のスキーマやフォーマット(JSON・XML・YAML・Pydanticモデル等)に強制的に準拠させる技術・手法の総称です。LLMの出力をプログラムで確実にパースして後続処理に渡す必要があるアプリケーションにとって、構造化生成は品質保証の要となります。
実現アプローチとして、(1)プロンプトによる誘導:「必ずJSON形式で回答してください。スキーマ: ...」という指示でフォーマットを要求するシンプルな方法。ただし遵守率が100%でなくパース失敗のリスクがある、(2)JSONモード/構造化出力(API機能):OpenAI・Anthropic等がAPI機能として提供するフォーマット強制機能。モデルレベルで保証されるため遵守率が高い、(3)制約付きデコーディング:Outlines・LM Format Enforcer等のライブラリが正規表現・CFG(文脈自由文法)でトークン生成を制限する方式。出力の文法的正確性を数学的に保証できる最も確実な方法があります。
代表的なツールとして、(1)Outlines:Pythonライブラリ、正規表現・JSON Schema・Pydanticモデルによる制約付きデコーディング、(2)instructor:Pydanticを使ったOpenAI/Anthropic APIのラッパー、バリデーション失敗時の自動リトライ機能付き、(3)Guidance:Microsoft製の構造化プロンプティング・シーケンス制御ライブラリがあります。
実務での活用例として、情報抽出(文書からエンティティをJSON配列で抽出)・APIレスポンスの生成・フォームデータのバリデーション・データ変換パイプラインの出力正規化が挙げられます。
参考情報・出典
- ▸Efficient Guided Generation for Large Language Models— arXiv / Willard & Louf (2023)(参照日: 2026-02-26)
- ▸instructor – Structured outputs from LLMs— instructor(参照日: 2026-02-26)