🚀

OpenAI:APIにおける構造化出力の導入

2024/08/07に公開

はじめに

OpenAIは、APIに構造化出力(Structured Outputs)を導入しました。これにより、モデルの出力が開発者が提供したJSONスキーマに確実に準拠するようになりました。

背景

従来の課題

  • 非構造化入力からの構造化データ生成は、AIアプリケーションの主要なユースケース
  • 開発者は、モデル出力を必要な形式に合わせるために様々な工夫を行ってきた

新機能の特徴

  • 開発者が提供したJSONスキーマに完全に準拠した出力を保証
  • 複雑なJSONスキーマの理解と生成に特化したモデルトレーニング

構造化出力の使用方法

関数呼び出し(Function Calling)

  • ツール定義内でstrict: trueを設定
  • すべての関数呼び出し対応モデルで利用可能

レスポンスフォーマット

  • response_formatパラメータにjson_schemaオプションを追加
  • 最新のGPT-4oモデルで利用可能

主要な使用例

  • ユーザーインテントに基づくUI動的生成
  • 最終回答と補足説明の分離
  • 非構造化データからの構造化データ抽出

技術的詳細

制約付きデコーディング

  • JSONスキーマを文脈自由文法(CFG)に変換
  • 動的な制約付きデコーディングを実装

代替アプローチ

  • 有限状態機械(FSM)やRegexを用いた手法との比較
  • CFGアプローチの利点:より複雑なスキーマに対応可能

制限事項

  • サポートされるJSONスキーマの制限
  • 初回リクエストの追加レイテンシ
  • 安全性の観点からのモデルの拒否可能性
  • トークン制限による不完全な出力の可能性
  • 並列関数呼び出しとの非互換性

利用可能性

関数呼び出しによる構造化出力

  • すべての関数呼び出し対応モデルで利用可能
  • Chat Completions API、Assistants API、Batch APIで利用可能
  • ビジョン入力との互換性あり

レスポンスフォーマットによる構造化出力

  • gpt-4o-miniとgpt-4o-2024-08-06、およびこれらに基づくファインチューニングモデルで利用可能
  • Chat Completions API、Assistants API、Batch APIで利用可能
  • ビジョン入力との互換性あり

価格

  • 新モデルgpt-4o-2024-08-06使用時、入力は50%、出力は33%のコスト削減

まとめ

構造化出力の導入により、開発者はより信頼性の高いAIアプリケーションを構築できるようになりました。この機能は、様々なユースケースに対応し、開発プロセスを効率化する可能性を秘めています。

参考サイト

https://openai.com/index/introducing-structured-outputs-in-the-api/

Discussion