Responses APIとChat Completionsの比較
Responses APIとChat Completionsのリクエスト形式、ストリーミング、ツール、プロバイダー互換性を比較し、適切な形式を選びます。
Responses APIとChat Completionsはいずれも言語モデルへ入力を送信しますが、入力、出力、ツール、ストリーミングイベントの構成が異なります。選択するときは「新しいエンドポイントなら全プロバイダーで使える」と考えず、クライアントとモデルの実際の契約を確認してください。
判断の基本は次のとおりです。
- Responses Item、ツールイベント、Responsesストリームを前提とするコーディングエージェントやアプリでは Responses API
- メッセージ中心のチャットクライアントや、Raw Chat Completions Pass-throughで公開されるモデルでは Chat Completions
モデルごとの対応形式はモデルと料金で確認してください。
プロトコルの比較
| 確認項目 | Responses API | Chat Completions |
|---|---|---|
| 主な入力形式 | inputと型付き入力Item | messages配列 |
| 出力形式 | 型付き出力Itemとイベント | Assistant Message、Choice、Delta |
| ストリーミング | Responsesイベントストリーム | Chat Completion Chunk |
| ツール処理 | 型付きTool CallとTool Output Item | Assistant Messageに付随するTool Call |
| 主な用途 | エージェント、コーディングツール、Responsesネイティブアプリ | チャットクライアント、広く対応するOpenAI互換プロバイダー |
| モデル移植性 | Responses検証済みモデルのみ | Chat Completions検証済みモデルのみ |
この比較はWire Contractを示すもので、すべてのプロバイダー機能をModelflareが相互変換するという意味ではありません。
Responses APIが適する場合
1回のモデル実行を1件のAssistant Messageではなく、複数種類のItemとして扱うクライアントでは/v1/responsesが適します。可視テキスト、推論要約、関数引数、カスタムツール入力などを区別するコーディングエージェントが代表例です。
curl -sS https://modelflare.dev/v1/responses \
-H "Authorization: Bearer $MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"input": "API移行前に確認する3項目を挙げてください。",
"stream": true
}'
Responsesストリーミングはエンドツーエンドで検証します。Chat Completions Chunkだけを理解するクライアントでは、接続に成功してもResponses Eventを正しく表示できない場合があります。
Chat Completionsが安全な場合
アプリがsystem、user、assistant、toolのMessageを中心に設計されている場合や、対象プロバイダーがOpenAI互換Chat Completionsを提供している場合は/v1/chat/completionsを選びます。
curl -sS https://modelflare.dev/v1/chat/completions \
-H "Authorization: Bearer $MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_CHAT_MODEL",
"messages": [
{"role": "system", "content": "簡潔に回答してください。"},
{"role": "user", "content": "APIヘルスチェックでは何を確認しますか?"}
],
"stream": true
}'
OpenAI以外のモデルファミリーでは、プロバイダー固有の推論や検索設定を変更せず届けるため、Raw Chat Completions Pass-throughを利用できます。これは対象を絞った互換方針であり、Responses全体への対応を意味しません。
モデル名だけで判断しない
次の3点を個別に確認します。
- APIキーがモデルへアクセスできること。 キーと利用可能グループに依存します。
- モデルがエンドポイントへ対応していること。 /v1/modelsに存在しても両形式で使えるとは限りません。
- クライアントがストリームを理解すること。 Responses EventとChat Completions Chunkは別の契約です。
いずれかを確認せずパスだけを変更すると、明確な互換エラーが空レスポンスや不完全な表示に変わることがあります。
ツールと構造化出力の移行
既存連携を移行する前に、次を確認します。
- ツール定義スキーマ
- Tool Call IDとTool Outputの返却方法
- 0やfalseなど明示値が省略されないこと
- 変更せずPass-throughすべきプロバイダー固有フィールド
- 可視テキストを含まないツール専用レスポンス
- 完了状態とUsageをクライアントが検出する方法
同じプロンプトから似た文章が返るだけでは十分なテストになりません。アプリが依存する機能を実際に含めて検証してください。
実用的な選択手順
- モデルと料金でモデルとグループを選ぶ
- 対応API形式を確認する
- 対応するクライアントガイドがあればModelflare Docsを利用する
- 非ストリーミングを1件送る
- ストリーミングを1件送る
- ツールまたは構造化出力を検証する
- 使用量ログでステータス、タイミング、トークン、コストを確認する
Responses APIはChat Completionsを常に置き換えるものではなく、Chat Completionsも旧式になったわけではありません。クライアント、選択モデル、アップストリーム契約のすべてが対応する形式を選んでください。