問題
LLMはテキスト生成に優れるが、アプリケーションは構造化データを必要とすることが多いです。
アプローチ1:プロンプトエンジニアリング
アプローチ2:関数呼び出し
アプローチ3:制約デコード
アプローチ4:Instructorライブラリ
ベストプラクティス
- 常にスキーマに対して出力を検証してください。
- 限定オプションには列挙型を使用してください。
- スキーマはシンプルに保ってください。
実用的パターン
構造化出力を得る最も信頼できる方法は、システムプロンプトにスキーマ定義と少ショット例を組み合わせることです。OpenAIはresponse_formatパラメータ、Claudeはtool_use APIを使用します。
よくある落とし穴
- スキーマ複雑さ: フラットでシンプルに保ってください。深いネストはエラー率を上昇します。
- バリデーション: 使用前に常にスキーマに対し検証してください。
- 列挙型: プロンプトに全有効値を含めてください。
- エスケープ: JSON内のJSONはバグの元です。