OpenAI Responses APIは、エージェント的なタスク処理に向けて設計された比較的新しいAPIだ。Chat Completions APIとは設計思想が異なり、複数ステップのタスクや状態管理を意識した構造になっている。

Responses APIとは何か

Chat Completions APIがメッセージの往復を一回一回独立して処理するのに対して、Responses APIはより長いタスクを「一つの処理単位」として扱うために設計されている。

特徴的なのは、内蔵ツールがある点だ。web_search(ウェブ検索)、code_interpreter(コード実行環境)、file_search(ファイル検索)といったツールをAPIレベルで提供していて、Function Callingのように自分でツールを実装しなくても、これらの機能をモデルが使えるようになっている。

またPrevious Response IDという仕組みがあって、前回のレスポンスのIDを次のリクエストに渡すことで、メッセージ履歴を自分で管理しなくてもAPIがコンテキストを引き継いでくれる。

Chat Completions APIとの違い

一番の違いはツールの組み込み方だ。Chat Completions APIでは、外部ツールを呼び出したい場合にFunction Callingで定義して、モデルがその定義に従って引数を生成し、実際の実行はアプリケーション側で行う、というフローが必要だった。

Responses APIではweb_searchcode_interpreterをツールとして指定するだけで、OpenAI側が実際の実行も担ってくれる。ウェブ検索の結果をどう取得してモデルに渡すか、というインフラ的な部分を自分で作らなくて済む。

もう一つの違いはstreamingの扱いだ。Responses APIはストリーミング出力をデフォルトに近い形で想定した設計になっていて、長い処理の途中結果をリアルタイムに受け取りやすくなっている。

基本的なコード例

PythonでResponses APIを使う最小構成は以下のようになる。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="codex-mini-latest",
    input="このPythonコードのバグを見つけて修正してください: def add(a, b): return a - b",
    tools=[{"type": "code_interpreter"}]
)

print(response.output_text)

code_interpreterを指定することで、モデルがコードを実際に実行しながら結果を確認することができる。

エージェント構築の基本パターン

Responses APIを使ってシンプルなエージェントを作るパターンを示す。

from openai import OpenAI

client = OpenAI()

def run_agent(task: str):
    # 最初のリクエスト
    response = client.responses.create(
        model="codex-mini-latest",
        input=task,
        tools=[
            {"type": "web_search"},
            {"type": "code_interpreter"}
        ]
    )
    
    # 前のレスポンスを引き継いで追加指示を出す
    followup = client.responses.create(
        model="codex-mini-latest",
        previous_response_id=response.id,
        input="結果を要約して、次に確認すべき点を教えてください"
    )
    
    return followup.output_text

result = run_agent("Claude CodeとOpenAI Codexの最新情報を調べて比較してください")
print(result)

previous_response_idを使うことで、前のレスポンスの文脈をそのまま引き継いだ対話ができる。

Codexモデルとの関係

Codexは本来OpenAIのコーディング特化モデルの名前だったが、現在は「Codex-mini」などのモデル名でResponses APIを通じてアクセスする形になっている。コードの生成・レビュー・デバッグという用途ではCodexベースのモデルが効果的だ。

Responses APIをClaude CodeのAPIと比較すると、OpenAI側の強みはウェブ検索・コードインタープリタといった組み込みツールの充実度だ。特にウェブ検索を組み込んだエージェントを自分でインフラを作らずに使いたい場合はResponses APIが手軽だ。

実用的な活用場面

Responses APIが最もシンプルに使える用途のひとつが、「コードレビューエージェント」だ。GitHubのPull RequestのdiffをAPIに渡して、「バグ・セキュリティ問題・改善点を見つけて」と指示する。code_interpreterを有効にしておくと、コードを実際に実行して確認する動作も組み込める。

もう一つは「ドキュメント自動生成エージェント」だ。コードファイルを渡してAPIドキュメントを生成させる用途で、web_searchツールを有効にしておくと、使用しているライブラリの最新ドキュメントを参照しながら適切なサンプルコードを含んだドキュメントを生成してくれる。

注意点と料金

Responses APIの料金はモデルと使用ツールによって変わる。web_searchを使用するとクエリあたりの費用が追加でかかる。code_interpreterも実行時間に応じた費用が発生する。

Agent SDKやLangChainなどのフレームワークも現在Responses APIへの対応を進めていて、それらを使うと定型的なエージェントパターンを素早く実装できる。ゼロから作るより、既存のフレームワークと組み合わせる方が実装のコストは下がる。