アプリケーションで AI を使用する場合、単なる自由形式のテキストではなく、コードが解析できる出力が必要になることがよくあります。ユーザーインターフェース用のデータを生成する場合でも、ビジネスロジックを自動化する場合でも、あるいは多段階の推論をオーケストレーションする場合でも、予測可能でマシンが読み取り可能なレスポンスは不可欠です。
そのため、4D 21 の 4D AIKit では、新たに response_format 属性が導入されました。これにより、モデルの出力の正確な構造を定義できるようになり、一貫性、バリデーション、およびアプリロジックへのスムーズな統合が保証されます。
なぜ構造化出力が重要なのか
構造化出力は、AIモデルが生成した内容を解析または解釈する必要があるすべての場合に役立ちます。
たとえば:
- データ生成: アプリですぐに使用できる、製品レコード・CRMエントリー・設定データなどの構造化されたコンテンツを自動的に作成します。
- 推論と計画: アプリが自動的に表示または実行できる次のステップやワークフローのオプションを、モデルに提案させることができます。
- マルチステップエージェント(ReActパターン): AI が特定のフォーマットに従って次のアクションを導く、推論と行動の組み合わせ。
- 思考の連鎖の制御 (可視部分のみ): 透明性やデバッグのために、ユーザーに公開する推論ステップをキャプチャします。
- AI推論のデバッグ / モニタリング: 構造を強制することで、AI の内部ロジックをログに記録し、分析できるようにします。
以下は、AIモデルが、4D で即座に解析できる構造化された推論データを返す簡単な例です:
{
"thought": "顧客は全体的に満足しているようですが、配送の遅れに言及しています。",
"next_step": "offer_discount"
}
ユースケース: AI は推論を要約し、コードが自動的に適用できる次のアクションを提案します。
response_formatによる構造化出力
AIモデルと対話する際、デベロッパーはプレーンテキスト、JSONオブジェクト、あるいはスキーマに対して検証されたデータなど、特定のフォーマットの結果を必要とすることがよくあります。新しい response_format 属性を使うことで、必要な構造で正確にレスポンスを返すようモデルに指示できるようになりました。
以下の例は、構造化出力によって一貫性のある検証済みのデータを保証する別のケースです(厳格なJSONとして返される財務サマリー):
var $client:=cs.AIKit.OpenAI.new($openAIKey)
var $chatHelper:=$ai.chat.create("あなたは財務データアナリストです。")
// AIに期待するレスポンスフォーマットを定義します
var $response_format:={type: "json_schema"; json_schema: {}}
$response_format.json_schema.name:="sales_summary"
$response_format.json_schema.schema:={type: "object"; properties: {}}
$response_format.json_schema.schema.properties.total_revenue:={type: "number"}
$response_format.json_schema.schema.properties.gross_margin:={type: "number"}
$response_format.json_schema.schema.properties.top_products:={Type: "array"; items: {Type: "String"}}
$response_format.json_schema.schema.required:=["total_revenue"; "gross_margin"; "top_products"]
$response_format.json_schema.schema.additionalProperties:=False
// JSONスキーマフォーマットをチャットヘルパーにアタッチします
$chatHelper.parameters.response_format:=$jsonFormat
// AIに送信するメッセージを作成します:
var $message:="第3四半期の売上数値は以下の通りです:\n"
$message+="- 製品A: 売上 $120,000、マージン 40%\n"
$message+="- 製品B: 売上 $85,000、マージン 35%\n"
$message+="- 製品C: 売上 $60,000、マージン 50%\n"
$message+="総売上、全体の売上総利益率を計算し、"
$message+="売上上位2製品をリストアップしてください。"
var $result:=$chatHelper.prompt($message)
//$result.choice.message.text:="{
// "total_revenue": 265000,
// "gross_margin": 0,406603773,
// "top_products": ["製品A","製品B"]
// ]
//}"
AI は検証済みの JSONオブジェクトで応答するため、追加処理をすることなく、データベースや UI ですぐに使用できます。
モデルのサポート状況
構造化出力のサポートは、モデルによって異なります:
- OpenAI GPT-4o および GPT-4-Turbo は、response_format をネイティブにサポートしています。
- ローカルモデルやその他のクラウドモデル (例: Claude、Gemini、または Ollama モデル) は、構造化出力を異なる方法でサポートしている場合があります (厳格な関数呼び出し経由、あるいはテキストベースのスキーマ強制など)。
また、response_format は JSON に限定されないことを覚えておいてください。モデルによっては、プレーンテキスト、XML、あるいはドメイン固有の構文などの他のフォーマットもサポートされている場合があります。
まとめ
4D AIKit の response_format を使用することで、AI の出力がまさに必要としている通りの、一貫性があり信頼できる状態で、UI やデータベース、その他のシステムに直接組み込めるようになります。この機能は、デベロッパーが AI の結果を簡単に解析し、4Dアプリケーションにインテリジェンスを深く統合することを助けます。これにより、AI は単なるチャットパートナーから、強力で構造化された推論エンジンへと変貌し、ユーザーの想像を超えるほどスマートでダイナミックな機能を実現可能にします。
Comments are not currently available for this post.