Skip to content

APIM AI GatewayのResponses API対応マトリクス:ステートレスな部分だけが進む理由

   
APIM AI GatewayのResponses API対応マトリクス:ステートレスな部分だけが進む理由のGPT生成本文インフォグラフィック

まとめ

Azure API Management(APIM)のAI Gateway機能が、OpenAIのResponses APIをどこまでカバーしているかを棚卸しした。
結論を先に言うと、対応は「リクエスト/レスポンスが通過する瞬間に処理できる機能」に偏っている。
トークン計測・診断ログ・content safetyの対応は厚い一方、Responses APIの本質であるステートフル性、つまりサーバー側に保存される会話状態・previous_response_id の連鎖・30日保持に対するゲートウェイ機能はゼロだ。

この偏りは個別機能の遅れではなく構造的なものだ。
従来のAPIゲートウェイは通過時点の観測・制御を前提に設計されており、状態にまたがる機能はその前提の外にある。
APIMでの検証を始める人の地図として、バックエンド(Foundry / Azure OpenAI)側とAPIM側それぞれの対応状況をまとめる。

Foundry / Azure OpenAI側:第一級サポート

v1 APIへの移行が実害の出るレベルで進行中

中心は2025年8月に始まったv1 API(/openai/v1/responsesで、日付付きapi-versionは廃止の方向にある。
Microsoft自身が新規プロジェクトの推奨インターフェースと位置づけ、Foundry Agent ServiceもResponses APIの上に構築されている。
移行は建前ではなく、コーディングエージェントのRoo CodeがResponses形式の必須化で動かなくなった事例が出るレベルで進んでいる。

ツールはMCP(リモートサーバー)、CUA、function calling、background mode、file search、code interpreterに対応する。
Deep research(o3-deep-research)もResponses経由だ。
プロジェクトエンドポイント経由なら、memoryやSharePoint連携などのFoundry専用ツールも乗る。

契約・実装上の注意点

  • Web検索は web_search_preview のみ対応で、web_search タイプは未対応。かつGrounding with Bing経由の検索にはMicrosoftのDPAが適用されないという契約上の重要事項がある
  • Content filterの結果が入る content_filters 配列はOpenAIベーススキーマに無いFoundry拡張のため、SDKに型付きプロパティが無く、raw/extraフィールドとして読む必要がある。入力ブロック時はHTTP 400と content_filter エラーコードが返る。ゲートウェイでレスポンスをパースする場合は考慮が要る

制約

  • 保存の保持期間は30日固定で延長不可。Zero Data Retention構成も不可(Abuse Monitoringを無効化しても残る)
  • 対応リージョン・モデルが限定される
  • previous_response_id でモデルをまたぐ連鎖はできない
  • カスタムヘッダーは10個までで、超過すると431が返る。さらに将来はヘッダーパススルー自体の廃止が予告されており、ヘッダーでのユーザーID伝搬に依存した設計は地雷になる

APIM側:ポリシー別マトリクス

機能対応備考
ガバナンス宣言chat completions / responses / real-time APIを対象と明記
llm-emit-token-metric○(厚い)cached/reasoning/thinkingトークンまで、Responses形式・Anthropic Messages形式横断で記録
llm-token-limitストリーミング時はprompt/completionとも推定値。reasoning等は制限計算の対象外
診断ログストリーミング対応、CorrelationIdでチャンクを結合。ストリーム切断時はトークン量が欠落する可能性
llm-content-safetyMCP/A2Aにも適用可。ストリーミングをスライディングウィンドウでバッファして検査
セマンティックキャッシュ×(推定)chat completion / completion APIのみ明記で、responsesへの言及なし。実機確認が必要
response id所有権×ビルトイン無し。DIYのみ
Unified Model API(preview)部分フォーマット変換込みの単一エンドポイント

response id所有権の欠如が何を意味するかは、response idは秘密情報として別記事にまとめた。

ステートレスな部分だけが進む理由

対応が進む機能と空白の機能を分けるもの

トークン計測・診断ログ・content safetyに共通するのは、リクエスト/レスポンスが流れる瞬間に処理が完結することだ。
ゲートウェイが従来から得意としてきた「通過時点の観測・制御」の延長にあるため、対応が進む。

一方、Responses APIの本質であるステートフル性に関わる機能は空白のままだ。
response idが指すサーバー側の状態、previous_response_id の連鎖、30日の保持期間。
これらを扱うAPIMのビルトイン機能はゼロで、認可の穴もこの構造的偏りの一症状にすぎない。

ステートフルAPIはゲートウェイの前提を3方向から壊す

従来のAPIゲートウェイは「リクエスト/レスポンスが通過する瞬間にすべてを観測・制御できる」という前提で設計されている。
Responses APIはサーバー側に状態を持ち込むことで、この前提を3方向から壊した。

  • 認可:response idがcapability token化し、リソース単位の認可では守れない
  • ルーティング:encrypted content(reasoning項目)がデプロイにバウンドされ、負荷分散の前提である「デプロイの交換可能性」が消える。LiteLLMでは別デプロイへのルーティングによる復号失敗が実際にインシデント化し、同一デプロイに固定する複数のaffinity機構が実装された
  • 監査:会話状態がゲートウェイの外(バックエンドの30日ストア)に存在し、通過時点のログだけでは追跡が完結しない

エコシステムの対応は「通過時点で処理できるもの」から進み、「状態にまたがるもの」は空白のまま残っている。
各プレイヤーが、自分に観測可能な範囲だけを固めている構図だ。
この空白を埋めるには、ゲートウェイとバックエンドの間に状態を扱うプロキシ層を置くか、store: false を強制して状態機能そのものを諦めるかの二択になる。

残る検証事項

このマトリクスには推定が含まれる。
実機で確認すべき事項を挙げておく。

  • store: false 指定時に previous_response_id が完全に無効化されるか
  • llm-token-limit のストリーミング時トークン推定の精度(コスト按分に使えるレベルか)
  • セマンティックキャッシュのresponses非対応は「記載が無いことからの推定」であり、実打での確認が必要
  • llm-content-safety のスライディングウィンドウ検査の挙動。「ゲートウェイはSSEボディを読めない」という通説を部分的に覆すため、どこまで任せられるかの見極め

関連記事

  1. response idは秘密情報:共有AIゲートウェイにおけるResponses APIの認可の穴
  2. そのIDは鍵であって住所ではない:識別子が所在を運ばない設計の悪さ
  3. AIで賢くなるほど、組織はバラバラになる:共通認識を「転送」から「再生成」へ
  4. 一人でも失敗したら終わる世界で、人類はどう生き残るか
  5. なぜGmailには個人情報を入れるのにAIには入れないのか
  6. HTMLの有効性とエージェント出力の情報設計
  7. マネーフォワード事案から考えるSaaS依存とゼロトラストの設計思想