OpenAI Assistants APIとは|使い方・料金と2026年8月終了・Responses API移行
OpenAIのAssistants APIは、会話の状態管理とツール実行をOpenAI側に任せてAIアシスタントを組む開発者向けAPIです。Chat Completions APIが1回のやり取りで完結するのに対し、Assistants APIはThread(会話)を作ってメッセージを積み、Runで実行する「状態を持つ」設計が特徴でした。ただし現在は重要な前提が変わっています。OpenAIは2025年8月26日にAssistants APIの廃止を告知し、2026年8月26日にシャットダウンする予定です。後継はResponses API(+Conversations API)で、新規開発はそちらが推奨されます。この記事では、Assistants APIの仕組み・Pythonでの使い方・料金を押さえたうえで、終了スケジュールと移行の実務までをまとめます。
まとめ:Assistants APIの要点と移行判断
- 正体:Assistant・Thread・Message・Runの4オブジェクトで会話状態をサーバー側に保持し、Code Interpreter・File Search・Function callingを組み込みで扱えるAIアシスタント構築API。現行はv2(ベータ)。
- 終了スケジュール:2025年8月26日に廃止告知、2026年8月26日にシャットダウン。以降はAPIが動かなくなる。
- 後継:Responses API+Conversations API。2025年3月11日公開で、機能パリティ達成後にAssistants APIの廃止が決まった。
- 料金:モデルの入出力トークン課金+ツール課金。Code Interpreterは$0.03/セッション、File Searchは保存$0.10/GB/日(最初の1GB無料)+呼び出し$2.50/1,000コール。
- 判断:これから新規で採用する理由はほぼない。既存実装は移行が必要で、ThreadからConversationへの自動移行ツールは提供されない。
Assistants APIの仕組み:4つの構成要素とツール
Assistants APIの本質は、会話履歴とツール実行の状態をOpenAI側が保持する点にあります。開発者はDBで会話履歴を持ち回る必要がなく、オブジェクトのIDを渡すだけで文脈が続きます。この仕組みが後継のResponses API/Conversations APIにも引き継がれています。
Assistant・Thread・Message・Runの関係
4つのオブジェクトは役割が分かれています。
- Assistant:モデル(例:gpt-4o)・指示(instructions)・利用ツールを束ねた設定オブジェクト。一度作れば複数の会話で使い回す。
- Thread:1人のユーザーとの会話セッション。メッセージを時系列で保持する入れ物で、履歴管理はThreadが担う。
- Message:Threadに積むユーザー/アシスタントの発話。テキストのほかファイルも添付できる。
- Run:AssistantをThreadに対して実行する処理。
queued→in_progress→(必要なら)requires_action→completedと非同期に状態遷移するため、完了までポーリングか待機が要る。実行の内訳はRun Stepとして記録される。
この「Assistantを作り、Threadに積み、Runで回す」流れが、Chat Completions APIの1リクエスト完結との最大の違いです。
3つの組み込みツール
Assistants APIは、AIに実務を行わせるためのツールを標準搭載しています。
- Code Interpreter:サンドボックス環境でPythonを実行し、計算・データ処理・グラフ生成・ファイル出力を行う。
- File Search:アップロードした文書をベクトルストアに取り込み、質問に関連する箇所を検索して回答に使う(RAG)。
- Function calling:自前で定義した関数(外部API呼び出しやDB参照など)をモデルに選ばせて実行させる。仕組みの詳細はFunction Callingの解説を参照。
使い方:Assistant作成からRun実行まで(Pythonコード)
公式のopenai Pythonライブラリを使うと、SDKがv2ベータのヘッダ(OpenAI-Beta: assistants=v2)を自動付与します。以下はCode Interpreterを持つアシスタントを作り、1問を解かせる最小例です。事前準備(APIキーの設定など)はPythonでのChatGPT API連携と同じ流れです。
from openai import OpenAI
client = OpenAI() # 環境変数 OPENAI_API_KEY を参照
# 1. Assistant を作成(モデル・指示・ツールを束ねる)
assistant = client.beta.assistants.create(
name="数学チューター",
instructions="あなたは数学の質問に答えるアシスタントです。",
model="gpt-4o",
tools=[{"type": "code_interpreter"}],
)
# 2. Thread(会話)を作成
thread = client.beta.threads.create()
# 3. ユーザーメッセージを Thread に追加
client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="3x + 11 = 14 を解いて。",
)
# 4. Run を実行し、完了までポーリング
run = client.beta.threads.runs.create_and_poll(
thread_id=thread.id,
assistant_id=assistant.id,
)
# 5. 応答メッセージを取得
if run.status == "completed":
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.data[0].content[0].text.value)
ポイントは、AssistantとThreadを分けて管理する点です。Assistantは使い回し、ユーザーごと・会話ごとにThreadを作ります。create_and_pollはRunの完了までSDK側で待ちますが、Function callingを使う場合はrequires_actionで止まるので、関数の実行結果を返して再開する処理を挟みます。
料金体系:トークン課金+ツール課金
Assistants APIの費用は「モデルのトークン料金」と「使ったツールの料金」の合算です。ツール料金は次のとおりで、モデルの入出力トークンは各モデルの通常API料金に準拠します(モデル料金は改定が入るため公式の料金ページで確認してください)。
| 項目 | 料金 | 補足 |
|---|---|---|
| モデル入出力トークン | 各モデルのAPI料金に準拠 | gpt-4o等、モデルごとに単価が異なる |
| Code Interpreter | $0.03 / セッション | セッションは既定で1時間有効。同一Thread内の連続利用は1回分 |
| File Search(保存) | $0.10 / GB / 日 | ベクトルストアの保存量に課金。最初の1GBは無料 |
| File Search(呼び出し) | $2.50 / 1,000コール | 検索の実行回数に課金 |
File Searchは保存量が積み上がると日割りで効いてくるため、使わないベクトルストアは削除する運用が費用を左右します。
【2026年8月26日終了】Responses APIへの移行
Assistants APIを新規採用しない最大の理由が、この終了スケジュールです。ここは他の解説記事が手薄なので、移行判断に必要な点を具体的にまとめます。
廃止スケジュールと背景
OpenAIは2025年3月11日にResponses APIを公開し、Assistants APIの機能をより簡潔なResponses APIへ集約する方針を示しました。機能パリティが整ったのち、2025年8月26日にAssistants APIの廃止を告知し、その1年後の2026年8月26日をシャットダウン日としています。シャットダウン後は当該エンドポイントが利用できなくなるため、それまでに移行を完了させる必要があります。
概念の対応(Assistants → Responses/Conversations)
移行は単なるメソッド置換ではなく、オブジェクトの考え方が変わります。公式ガイドが示す対応は次のとおりです。
| Assistants API(旧) | 後継 | 違い |
|---|---|---|
| Assistant | Prompt | モデル・指示・ツールの設定。ダッシュボードでバージョン管理する |
| Thread | Conversation | メッセージだけでなくツール呼び出し・出力などItemを保持 |
| Run | Response | 入力Itemを渡して出力Itemを受け取る同期的な実行 |
| Message / Run Step | Item | メッセージ・ツール呼び出し・出力を汎用化した単位 |
移行の実務と注意点
ThreadからConversationへの自動移行ツールは提供されません。公式は、新しい会話からConversationに載せ替え、既存Threadは必要に応じてバックフィルする方針を推奨しています。実装面では、Responses APIがWeb検索・File Search・Code Interpreter・Computer use・リモートMCP接続などの組み込みツールを持ち、Assistants APIより広い範囲をカバーします。詳しい違いと移行判断はOpenAI Responses APIの解説にまとめています。結論として、2026年8月に消えるAPIを新規プロジェクトの土台に据えるのは避け、最初からResponses API+Conversations APIで組むのが妥当です。
Assistants API利用時の制限と注意点
- ベータ扱い:現行はv2ベータで、REST直叩き時はヘッダ
OpenAI-Beta: assistants=v2が必要。仕様変更や廃止の対象になりやすい。 - 非同期実行:Runは即時に結果が返らず状態遷移する。
requires_action時はFunction callingの結果を返して再開する制御が要る。 - レート制限:利用階層(ティア)ごとにリクエスト・トークンの上限があり、Runの多重実行で詰まりやすい。
- Azure OpenAI:AzureのAssistants APIはクラシック(プレビュー)扱いで、本家の終了に合わせた計画の確認が必要。
よくある質問
Assistants APIの料金はいくらですか?
モデルの入出力トークン料金に、使ったツールの料金が加算されます。ツールはCode Interpreterが$0.03/セッション(1時間有効)、File Searchが保存$0.10/GB/日(最初の1GB無料)と呼び出し$2.50/1,000コールです。モデル単価は改定されるため、実費は公式の料金ページで確認してください。
Assistants APIはいつ終了しますか?終了したらどうなりますか?
2025年8月26日に廃止が告知され、2026年8月26日にシャットダウンされます。以降は該当エンドポイントが動かなくなるため、それまでにResponses API(+Conversations API)への移行が必要です。
Chat Completions APIやResponses APIとの違いは?
Chat Completions APIは状態を持たない1回完結型です。Assistants APIはThreadで会話状態を保持しツールを組み込みで扱えますが、終了予定です。Responses APIは両者を統合した後継で、状態管理(Conversations)と組み込みツールを備えつつ実行はシンプルな入出力型です。
Azure OpenAIのAssistants APIはどうなりますか?
Azure OpenAI版のAssistants APIはクラシック(プレビュー)として提供されています。本家の終了方針に連動する可能性があるため、Azure側の最新の提供計画・移行案内を確認してください。
今から新規で使い始めてよいですか?
推奨しません。2026年8月に終了するAPIを新規に採用すると、まもなく移行コストが発生します。新規開発は最初からResponses API+Conversations APIで設計するのが合理的です。