AIにデータを構造化させる際に、指定したスキーマに確実に従わせることが可能なモードをOpenAIがリリースしました。

Introducing Structured Outputs in the API | OpenAI

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



構造化されていないデータを読み取り、構造化されたデータを出力するのはAIの主要なユースケースの一つです。これまでもOpenAIのAPIでは「JSONモード」という設定が存在しており、指定した構造を持つJSONをAIに出力させることが可能でしたが、必ずしも指定した構造通りのデータが出力されるとは限りませんでした。

今回リリースされた「gpt-4o-2024-08-06」モデルでは、strictを「true」に設定することで100%の精度で指定した構造に従ってデータを出力できるとのこと。



今回の機能を利用する方法は2つ。1つ目は「tools」を利用した関数呼び出しの際に「"strict": true」と設定する方法で、gpt-4-0613およびgpt-3.5-turbo-0613以降の全てのモデルで利用可能です。



2つ目は今回新たに利用可能になった「response_format」のオプションで「json_schema」を設定する方法です。こちらはgpt-4o-2024-08-06モデルおよびgpt-4o-mini-2024-07-18モデルにて利用可能とのこと。



なお、モデルが安全ではないリクエストとして応答の生成を拒否した場合、応答の「refusal」という項目に拒否したことが記載されるため、指定した通りの構造化データが生成されなかったことをプログラムからすぐに判別することができます。



その他、トークン数の制限に到達した場合など実行が途中で停止した場合にも指定した構造化データが出力されない場合があるとのこと。また、並列関数呼び出しが利用できなかったり、最初のAPI応答に追加のレイテンシが発生するなどの制限も存在しています。

従来モデルのgpt-4o-2024-05-13から今回リリースされたgpt-4o-2024-08-06モデルに切り替えることで、入力トークン数に応じた料金が半額の「100万トークン当たり2.5ドル(約366円)」になり、出力トークン数に応じた料金が33%オフの「100万トークン当たり10ドル(約1460円)」になるとのことです。