OpenAI Responses API 使い方Chat Completions 移行function calling 実装

OpenAI Responses API実装ガイド|Chat Completionsからの移行・function calling・運用設計

公開

OpenAI API実装をこれから始めるなら、まずResponses APIを基準に設計するのが安全です。この記事では、単発応答の最小実装から、function calling、会話ステート管理、Background modeまでを順番に整理し、移行時に壊れやすいポイントを先に潰す手順を示します。確認日: 2026-02-20。

要点まとめ

  • 新規実装はResponses API前提で進めるほうが、tools・state・非同期処理を一本化しやすくなります。
  • 最初は単発応答の成功を作り、次にfunction calling、最後に会話ステートとBackground modeへ段階拡張すると失敗が減ります。
  • 移行時はモデル対応差・JSON schema・streaming時の状態引き継ぎで詰まりやすいため、検証環境で先に潰す運用が必須です。
  • ChatGPT契約とAPI課金は別管理なので、実装前に予算と責任範囲を分けて設計する必要があります。

Q1. OpenAI Responses APIとChat Completionsの違い

違いは単純なエンドポイント名ではなく、運用設計の前提です。Responses APIは、ツール呼び出しや会話状態、長時間処理まで含めて一貫管理しやすい構造になっています。

比較軸Responses APIChat Completions実務判断
APIの設計思想応答生成に加え、tools・会話状態・長時間処理を含めて統合的に扱えるテキスト生成中心で、周辺機能は別実装になりやすい新規機能はResponses API、既存維持は段階移行
ツール連携built-in toolsとfunction callingを同じ設計で扱えるfunction calling中心で、運用拡張時に構成が増えやすい将来拡張を見込むならResponses API寄りで設計
会話状態`previous_response_id` と `conversation` で状態管理しやすい履歴配列をアプリ側で都度管理する前提が強い会話継続が要件ならResponses APIの優位性が高い
非同期運用Background modeで長時間処理を扱える非同期設計はアプリ側実装依存長時間ジョブがあるならResponses APIを優先

API以前の運用整理が必要な場合は、ChatGPTとAPIの使い分けガイドも先に読むと判断しやすくなります。

Q2. 最短で動かす実装手順(単発応答→JSON出力)

最初に全機能を組み込むと、問題切り分けができなくなります。下記3ステップで「確実に動く最小単位」を積み上げる形が実務向きです。

Step 1. 単発レスポンスを返す最小構成を通す

まずは入力1つ、出力1つで成功パターンを作ります。ここでモデル指定・エラーハンドリング・ログ出力を固定すると後工程が安定します。

const response = await client.responses.create({
  model: "gpt-5.2",
  input: "社内向けAI利用ルールの骨子を5項目で出力してください"
});

Step 2. 出力形式を固定して再現性を上げる

free-form出力のまま本番投入すると後段処理が壊れやすくなります。JSON schemaや固定見出しで受け口を先に決めます。

const response = await client.responses.create({
  model: "gpt-5.2",
  input: "生成AI利用ルールをJSONで出力",
  text: {
    format: {
      type: "json_schema",
      name: "policy_outline",
      schema: {
        type: "object",
        properties: {
          title: { type: "string" },
          rules: { type: "array", items: { type: "string" } }
        },
        required: ["title", "rules"],
        additionalProperties: false
      }
    }
  }
});

Step 3. function callingと監査ログを追加する

外部連携は1つずつ追加し、呼び出し成否・リトライ・採用可否をログで追える状態にします。最終判断をAIへ丸投げしない設計が基本です。

const response = await client.responses.create({
  model: "gpt-5.2",
  input: "今週のSaaSニュースを3件要約",
  tools: [{ type: "web_search_preview" }]
});

開発全体像を俯瞰したい場合は、AIエージェント構築ガイドの設計フローも参考になります。

LINEで毎週AI知識を配信中

毎週1本、実務で使える生成AI活用のヒントとAIニュースをLINEで配信しています(無料)。読むだけで、AI活用の「知っておくべきこと」が自然と身につきます。受講前の不安や、自分に合うか確認したい方は、個別LINE相談もできます。

今すぐ無料で登録する(30秒)

Q3. function calling / built-in toolsを安全に組み込む方法

toolsは便利ですが、権限設計と監査設計を先に作らないと運用事故につながります。まずは1ツール単位で導入し、目的と責任範囲を固定します。

ツールごとに責任境界を分ける

検索、ファイル参照、実行系ツールを同時に開けず、目的別に権限を分割します。

戻り値をそのまま採用しない

ツール結果は一次情報の抜粋として扱い、採用前に人が確認するフローを固定します。

失敗時のフォールバックを明示する

ツール失敗時に再実行する条件、手動代替に切り替える基準、通知先を先に決めます。

外部連携を増やす際は、接続設計の安全面としてMCPの落とし穴解説を併読すると設計漏れを減らせます。

Q4. conversation stateとprevious_response_idで履歴を壊さない運用

会話品質の劣化はモデル精度より、状態管理ミスが原因のことが多くあります。ID管理、再送ルール、ログ保持をセットで設計してください。

  • レスポンスIDを保存し、追跡可能な単位(ユーザー/案件/スレッド)と紐づける
  • `previous_response_id` を使うケースと、新規会話を開始するケースを明確に分離する
  • streaming時に履歴引き継ぎが壊れたときの再送ロジックを用意する
  • 会話ログは機密区分に応じて保持期間を分ける

チーム運用へ広げる場合は、社内ガイドライン雛形で責任分担を先に定義しておくと崩れにくくなります。

LINEで毎週AI知識を配信中

毎週1本、実務で使える生成AI活用のヒントとAIニュースをLINEで配信しています(無料)。読むだけで、AI活用の「知っておくべきこと」が自然と身につきます。受講前の不安や、自分に合うか確認したい方は、個別LINE相談もできます。

今すぐ無料で登録する(30秒)

Q5. Background modeで長時間処理を回す実務設計

レポート生成や大規模要約のように処理時間が長いタスクは、同期処理のままだとタイムアウトや再実行事故を起こします。Background modeへ切り分ける基準を先に決めます。

導入対象を限定する

最初から全処理を非同期化せず、5秒を超える重い処理だけをBackground modeに寄せます。

状態監視を先に実装する

ポーリング間隔、タイムアウト、失敗通知を先に決めることで、ジョブ取りこぼしを防げます。

運用KPIを決める

平均処理時間、失敗率、手動復旧件数を追い、週次で改善する形にすると定着しやすくなります。

Q6. 移行時につまずくポイントとチェックリスト

コード変換だけで移行を終えると、実運用で不具合が出やすくなります。事前に発生しやすい症状と回避策を整理しておくと、PoCから本番への移行速度が上がります。

詰まりポイント症状回避策
モデルとパラメータの対応不一致JSON schema指定でエラーになる、または期待形式で返らないモデルごとの対応パラメータを公式リファレンスで事前確認する
会話ステートの引き継ぎ不備前ターン文脈が失われる、応答が突然初期化されるID保存ロジックと再送ロジックを統合テストで確認する
tools権限の過剰付与不要な外部アクセスや監査不能な処理が発生する用途別にtoolsを分離し、最小権限で運用する
ChatGPT課金とAPI課金の混同予算超過、部門間で責任の押し付けが発生する契約と請求を分離し、管理責任者を明確にする

よくある質問(FAQ)

Responses APIはChat Completionsと何が違いますか?

Responses APIは、テキスト生成だけでなくtools連携、会話ステート管理、長時間処理まで統合しやすい構造です。新規実装ではResponses APIを基準に設計する方が運用を一本化しやすくなります。

既存のChat Completionsコードは全部書き直す必要がありますか?

一括置換は不要です。単発応答の置き換えから始め、次にtools連携、会話ステート、非同期処理の順で段階移行するとリスクを抑えられます。

function callingとbuilt-in toolsは同時に使えますか?

用途を分ければ併用できます。ただし権限を広げすぎると監査が難しくなるため、目的単位でtoolsを分離し、採用前レビューを必ず入れる運用が必要です。

previous_response_idは毎回保存すべきですか?

会話を継続する要件があるなら保存が必要です。ユーザー単位や案件単位で管理し、再送時の復旧ルールまで定義しておくと履歴崩れを防ぎやすくなります。

Background modeはどの処理から導入するべきですか?

まずはタイムアウトしやすい長時間処理だけに限定して導入するのが実務的です。全処理へ一気に広げず、監視と通知の運用が固まってから拡張してください。

ChatGPT有料契約があればAPI料金は不要ですか?

不要にはなりません。ChatGPT契約とOpenAI API利用は課金体系が別です。予算管理はプロダクト利用とAPI利用を分けて設計する必要があります。

LINEで毎週AI知識を配信中

毎週1本、実務で使える生成AI活用のヒントとAIニュースをLINEで配信しています(無料)。読むだけで、AI活用の「知っておくべきこと」が自然と身につきます。受講前の不安や、自分に合うか確認したい方は、個別LINE相談もできます。

今すぐ無料で登録する(30秒)

API選定だけでなく、AI活用の判断軸とキャリアを同時に設計する

AIリブートアカデミーでは、特定ツールの操作習得ではなく、AIを仕事に活かすための判断軸を体系化し、キャリア設計と学習継続まで一体で整えることを重視しています。

生成AI活用力

実務で再現可能なAI活用の判断軸を整理し、業務へ落とすための思考プロセスを身につけます。

自己理解・キャリアデザイン

AIを鏡にして自分の強みと価値観を言語化し、次のキャリア選択へつなげます。

仲間と共に学ぶ環境

同じ課題を持つ仲間との対話と実践共有を通じて、学習を継続可能な形にします。