OpenAIは、Containersの課金を分単位へ変更し、各セッションに最低5分の課金を適用した。以前はContainerセッションが20分単位で課金されていた。

対象にはResponses APIで利用するCode InterpreterやHosted Shellなどのコンテナ実行が含まれる。変更後は短時間処理の費用を抑えやすい一方、セッションを細かく作り過ぎる実装では最低課金が積み上がる。

何が変わったか

Containerは、モデルがコード実行、ファイル処理、シェル操作などを行う隔離実行環境である。料金はモデルのトークン料金とは別に発生する。

課金単位が20分から実利用時間ベースの分単位へ変わったが、1セッション当たり最低5分が適用される。30秒の処理を10セッション起動すれば、実行時間5分ではなく課金対象50分相当になり得る。

変更前後の差

項目以前変更後
課金単位セッション当たり20分分単位
最低課金20分相当5分
短時間処理割高になりやすい改善しやすい
セッション乱立20分ずつ増加5分ずつ増加
最適化焦点起動回数削減再利用、終了、アイドル、並列数

分課金は自動的な値下げではない。ワークロードの平均セッション時間と作り方で結果が変わる。

誰に影響するか

  • PDF、CSV、Excel、画像などをCode Interpreterで処理する
  • エージェントがHosted Shellでコマンドを実行する
  • 一つのユーザー操作ごとに新しいContainerを作る
  • 短時間ジョブを大量に並列実行する
  • 失敗時にセッションごと再作成する
  • 大きなContainerサイズを選んでいる
  • モデルトークン費用だけを予算監視している

特に、デモ段階から本番へ移行し、同時利用者が増えたシステムは再計測が必要である。

必要な対応

費用を次の式で分解する。

総費用 =
  モデル入力
+ モデル出力
+ キャッシュ
+ Containerサイズ単価 × max(実利用分, 5分) × セッション数
+ その他Tool料金

平均だけでなくP95、失敗ジョブ、再試行、並列ピークを計測する。予算はユーザー数ではなく、セッション作成率と課金分数で管理する。

実装・移行手順

1. セッション生成箇所を特定する

ユーザー操作、会話、ジョブ、ファイル単位のどこでContainerを作成しているか確認する。SDKが暗黙に新規セッションを作る場合もある。

2. 利用パターンを分類する

  • 1分未満の単発処理
  • 5〜20分の分析
  • 20分超の長時間処理
  • 対話中に複数回コードを実行
  • バッチで多数のファイルを処理
  • 失敗率の高い不安定処理

分類ごとに再利用方針を変える。

3. セッション再利用を設計する

同じ利用者・同じ業務・同じデータ境界で複数の処理を行う場合、適切な範囲でContainerを再利用する。ただし、異なる顧客や権限間で共有しない。

4. 明示的な終了とTTLを設定する

処理完了後のアイドル状態を放置しない。終了APIやセッションTTLが利用できる場合は実装し、クライアント切断、例外、タイムアウトでも終了処理が走るようにする。

5. 並列上限を設ける

Queueを使い、ユーザー・テナント・Project単位で同時Container数を制限する。レスポンスを速くするために無制限並列を許可しない。

6. コストメタデータを記録する

Session ID、Containerサイズ、開始・終了、課金対象分、ジョブID、利用者、成功・失敗、再試行理由を保存する。入力ファイル内容は費用ログへ含めない。

失敗しやすい点

  • 1リクエスト1Containerで最低5分課金を大量発生させる
  • 不要な大型サイズを常時選ぶ
  • 再試行のたびに新しいContainerを作る
  • 処理終了後のアイドル時間を計測しない
  • 成功ジョブ単価だけを見て失敗費用を除外する

一時的なモデル応答エラーと、Container自体の破損を区別する。すべての再試行で環境を作り直さない。

評価方法

  • 1成功ジョブ当たりContainer課金分
  • セッション当たり実利用時間と課金時間
  • 最低5分に切り上げられた比率
  • セッション再利用率
  • アイドル時間率
  • Containerサイズ別の成功率・処理時間・費用
  • ユーザー・テナント別の同時実行ピーク
  • 失敗・キャンセル・再試行による費用
  • モデル費用とContainer費用の構成比
  • 旧20分方式を基準にした差額

評価は同じ業務データと同じ品質条件で行う。単純に処理を短くして品質を落とさない。

ロールバック

新しい再利用設計でデータ混在や状態汚染が起きた場合は、再びジョブ単位の分離へ戻す。その際、最低5分課金増を一時的に受け入れ、安全性を優先する。

  1. 再利用Feature Flagを停止する
  2. 新規ジョブを専用Containerへ切り替える
  3. 既存共有セッションを終了する
  4. テナント間データ混在がないか監査する
  5. 費用上限とQueueを一時的に厳しくする
  6. 原因修正後、限定テナントで再開する

課金方式そのものを元へ戻すことはできないため、ロールバック対象はアプリケーションのセッション管理である。

編集部分析

20分固定から最低5分の分課金へ変わることで、短い分析や軽いShell処理の採用障壁は下がる。ただし、価格体系が細かくなるほど、アプリケーション設計の差が費用差として直接現れる。

最適化の中心は、単にセッション数を減らすことではない。データ分離、再現性、障害隔離を維持しながら、同じ作業単位の処理を適切にまとめることである。過度な再利用は、別ユーザーのファイルや変数が残る危険を生む。

FinOpsは請求後の集計だけでなく、Queue、並列制御、サイズ選択、終了処理を設計レビューへ含める必要がある。

実務チェックリスト

  • [ ] Containerを作成する全コード経路を特定した
  • [ ] 最低5分を含む費用式へ更新した
  • [ ] セッションの開始・終了・アイドルを記録した
  • [ ] 異なる顧客や権限間で再利用していない
  • [ ] 適切なContainerサイズを実測で選んだ
  • [ ] 同時実行数とユーザー別上限を設定した
  • [ ] 失敗・キャンセル・再試行費用を計測した
  • [ ] 予算超過時に新規セッションを抑制できる
  • [ ] 再利用停止Feature Flagを用意した
  • [ ] 旧方式との費用差を業務シナリオで比較した

一次情報