2024/11/23

つないでみよう:#22)GPT4o Structured Outputs - 指定方法

前回から紹介している GPT-4o で利用できる Structured Outputs の続きです。今回は Structured Outputs の指定方法について理解できた範囲でまとめます。


Structured Outputs vs JSON Mode

API のドキュメントには Structured Outputs のセクションが存在します。

Structured Outputs - Ensure responses follow JSON Schema for Structured Outputs.

この中に JSON Mode との比較があります。

どちらの機能も出力が JSON にはなりますが、スキーマに準拠するのは Structured Outputs だけとなります。JSON Mode では JSON のスキーマは AI が生成するということですね。

対応モデルは Structured Outputs が GTP-4o 以降の対応になるのですが、JSON Mode は GPT-3.5 でも利用できるのがポイントですね。


スキーマ設定

前回例に挙げた Structured Outputs のスキーマ設定部分を分解すると次のようになります。


スキーマの名前 名称は自由に設定できるようです。
出力される JSON に影響しないようです。
スキーマ定義 このオブジェクト配下に出力したいスキーマを定義します。
仕様に従い記述すれば自由に定義できます。   
データ型 作成するノードのデータ型です(後述)。
出力ノード名称 作成するノードの名称です。
出力される JSON のノード名に利用されます。
ノード毎の出力指示 そのノードにどのような値を含めるのか AI に指示します。
項目ごとに指定できるので便利ですね。
必須項目 データ型がオブジェクトの場合に指定します。
出力が必須であるノードを指定する機能のようですが、現在のところ全ノードを指定する必要があるようです。


利用できるデータ型

ノードに指定できる型は以下のような種類があります。

string 文字列
number 数値
boolean True / False
integer 整数
object オブジェクト
array 配列
enum 選択肢のうちどれか?
anyOf ???

object を指定すると JSON を階層化できます。array を利用するとノーツで言う複数値を返答させることができます。これらを利用すると複雑な構造の JSON を定義できますね。

なお、enum と anyOf についてはまだ検証していないので詳細は不明です...。


制限事項

API のドキュメントを読み進めるといろいろと制限事項があるようです。ざっくりまとめると次のような項目です。

  • スキーマ内のキーの順序で生成される
  • 最大5レベルのネスト
  • 100 個のオブジェクト
  • スキーマにないキー/値は追加できない
  • 必須には全てのオブジェクトを指定

AI の進化速度を考えるとこれら制限事項はどんどん改善されていくのだと思います。日々チェックが必要ですね。


前回 連載:つないでみよう 次回


0 件のコメント:

コメントを投稿