問題

LLMはテキスト生成に優れるが、アプリケーションは構造化データを必要とすることが多いです。

アプローチ1:プロンプトエンジニアリング

アプローチ2:関数呼び出し

アプローチ3:制約デコード

アプローチ4:Instructorライブラリ

ベストプラクティス

  • 常にスキーマに対して出力を検証してください。
  • 限定オプションには列挙型を使用してください。
  • スキーマはシンプルに保ってください。

実用的パターン

構造化出力を得る最も信頼できる方法は、システムプロンプトにスキーマ定義と少ショット例を組み合わせることです。OpenAIはresponse_formatパラメータ、Claudeはtool_use APIを使用します。

よくある落とし穴

  • スキーマ複雑さ: フラットでシンプルに保ってください。深いネストはエラー率を上昇します。
  • バリデーション: 使用前に常にスキーマに対し検証してください。
  • 列挙型: プロンプトに全有効値を含めてください。
  • エスケープ: JSON内のJSONはバグの元です。