OpenAI の 新しいAPI "Responses API" について
執筆日
2025/03/15
概要
今週火曜日(2025/03/11)にOpenAIから、新しいAPIの発表がありました。既存のChat APIによるシンプルな会話と、エージェント構築のためのAssistants APIの機能を統合してより使いやすく進化させたResponses APIです。先日GPT-4.5が発表されたところでしたがそちらは高級モデルで、API利用してシステム構築目的に使うには少し……という感じでした。一方こちらは、同日に発表されたAgent SDKと合わせて最近のLLMのエージェント化の潮流に乗っていてシステム開発を更に便利にするのに重要な新機能であると感じました。
既存APIとの置き換えについて
リリース内容の引用
What this means for existing APIs
(中略)
Chat Completions API: (中略)the Responses API is a superset(opens in a new window) of Chat Completions with the same great performance, so for new integrations, we recommend starting with the Responses API.
(中略)
Assistants API: (中略) We’re working to achieve full feature parity between the Assistants and the Responses API, including support for Assistant-like and Thread-like objects, and the Code Interpreter tool. Once this is complete, we plan to formally announce the deprecation of the Assistants API with a target sunset date in mid-2026.
Chat API
Chat Completionsでできることはできる上で更に追加の機能が使えるため、新しく始める場合はReaponses APIを使うことを推奨しています。Chat APIも継続して提供されるようなので、簡単なチャットやり取りであれば無理に既存のシステムを書き換える必要はなさそうです。
Assistants API
こちらについてはいくつかの機能がまだResponses APIに実装されていませんが、それらの実装が完了次第2026年の中盤ごろには廃止されるようです。Responses APIで既に使える機能のみで作られたシステムであれば早めに置き換えを始めておいた方が良さそうです。
チャットボット開発をしたことがある方は、一度はchat.compeletions.create
を書いたことがあると思いますし、各検索エンジンやLLMにOpenAIのAPIの使い方を聞けばこちらが返ってきてしまいますが、今後はResponse APIで書き始めるようにしたいですね。
python
ライブラリの更新
すでにopenai
のライブラリをインストールしている人はバージョン1.66.0
以上のアップグレードが必要です。
pip install -U openai
2025/03/12の1.66.0
からResponses APIについての記述があります。
Azure OpenAI
なお、AzureOpenAI
のAPIは、執筆日時点で最新preview版ですら2025-01-01-preview
で止まってしまっているため……使えませんでした。そのため以降コードの解説については最小限にさせていただきます、無念。またAPI更新が来たら検証結果等の記事を出して、こちらにもリンクを追記させていただきます。
適当なapi_version
でresponses APIを叩こうとするといつものエラーが出ます。
openai.NotFoundError: Error code: 404 - {'error': {'code': '404', 'message': 'Resource not found'}}
Microsoftの発表をよく読んだら最後に"in the coming weeks."と書いてありました。
ドキュメントの見方
今までのOpenAI Platformでapi-mode
を指定するとChat APIとResponses APIを切り替えられます
# Chat API
https://platform.openai.com/docs/quickstart?api-mode=chat
# Responses API
https://platform.openai.com/docs/quickstart?api-mode=responses
簡単なコードの違い
- システム・ユーザーメッセージをワンライナーで簡単に書くことができます
- 複数やり取りを順に入力したい場合は
input
にChat APIと同じように辞書リストで渡せばいいようです。 - Chat APIの方もいつの間にかシステムメッセージの
role
がsystem
からdeveloper
に変わっていました。いつから……?
- 複数やり取りを順に入力したい場合は
- outputで出力全体を見られますが、テキストだけならoutput_textで簡単に取得できます
from openai import OpenAI
client = OpenAI()
# Chat API
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "developer",
"content": "質問は英語で来るが、回答は日本語ですること"
},
{
"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."
}
]
)
print(completion.choices[0].message.content)
# Responses API
response = client.responses.create(
model="gpt-4o",
instructions="質問は英語で来るが、回答は日本語ですること",
input="Write a one-sentence bedtime story about a unicorn."
)
print(response.output_text)
built-in機能
単純な回答生成ではなく追加の機能拡張を行うためのものです。以前紹介したfunction callingだけでなく、組み込みで関数記述をせずに使うことができるものもあります。
使用できる機能
- Web検索
- ファイル検索
- コンピュータ操作
- function calling
コード例
from openai import OpenAI
client = OpenAI()
tools = <built-in 機能> # 次のコードブロックに各々の機能のtoolsの書き方
response = client.responses.create(
model="gpt-4o",
tools=tools,
input="What was a positive news story from today?"
)
print(response.output_text)
# Web検索
tools = [{"type": "web_search_preview"}] # Chat APIにも追加されてましたがいつから……?
# ファイル検索(事前にクライアント上にベクターストアを作成する必要があります)
tools=[{
"type": "file_search",
"vector_store_ids": ["<vector_store_id>"],
"max_num_results": 2
}]
# コンピュータ使用
# tools以外にも詳細なオプション設定が必要なため省略
補足
- ファイル検索の詳細
- 軽く見た感じ
client
にファイルを登録しているんですが、アップロードするわけではない? - ファイル上限: プロジェクトで合計100GB、10,000ファイルまで。1ファイルは512MBまで
- 検索方法: セマンティック・ベクトル検索が採用されており、他の検索サービスを実装せずに使える点はかなり便利そうです
- 利用時のトークンや使用料については書いてないので何ともブラックボックスな点が多く調査が必要そうです
- 軽く見た感じ
- コンピュータ使用の詳細
いっつも思うのですがAIにコンピュータ操作をさせたい需要って難しい(少なくとも企業向けPJとしてはあんまり?)興味という点では、AIだけが操作するミニコンピュータを用意して音声で操作指示をするデバイスを作るとか面白そうだなと思います。
まとめ
Responses APIはAssitants APIでテストされていたアシスタント機能をChat APIに統合して処理を最適化したもの、という認識でよさそうです。メッセージの書き方や出力確認が簡略化できるところはかなり好印象でした。Web検索機能についてはChatGPTで使っていたものがようやくAPIでも簡単に使えるようになるということで、これを使ったシステム開発には特に期待しています。(設定で特定ドメインのURLのみを検索対象にするとかできるといいなあ……)
今後もResponses APIのbuilt-in機能を初めとした機能拡張が楽しみです。
Discussion