プロンプトを短くした後は、各レスポンスのusageとタスク全体のコストで節約効果を確認しましょう。短い回答でも推論にかなりのトークンを消費することがあり、会話を続けると履歴が再び計上される場合があります。予算を管理するには、トークン量、料金区分、結果を得るまでに必要だった呼び出し回数を分けて把握してください。

4つのカウンターとその内訳
OpenAIはusageオブジェクトの例で、入力、出力、およびそれぞれの内訳を示しています。次のように読み取ります。
input_tokens— 会話を続けるために使われるコンテキストを含む、この呼び出しの入力トークン総数。input_tokens_details.cached_tokens— キャッシュから処理された入力の一部。これはすでにinput_tokensに含まれています。output_tokens— 推論を含む、生成されたトークンの総数。output_tokens_details.reasoning_tokens— 推論に使われた出力トークンの一部。
推論トークンはすでにoutput_tokensに含まれているため、出力に二重加算してはいけません。 OpenAIはこれらを出力トークンの料金で課金します。同様に、cached_tokensを入力に加えると、同じリクエストの一部を二重に数えることになります。総トークン数にはtotal_tokens、またはinput_tokens + output_tokensを使ってください。
コスト:入力を料金区分ごとに分ける
最新の料金ページでは、通常の入力、キャッシュ済み入力、キャッシュ書き込み、出力が別々に示されています。実際に使用するモデル、処理モード、適用されるコンテキスト長に応じた料金を選んでください。正確な値は、バージョン管理された計算設定に保存しましょう。
現在のキャッシュのドキュメントにある重要な点として、GPT-5.6以降のモデルではinput_tokens_details.cache_write_tokensが計上されます。利用中の料金体系でキャッシュ書き込みに別料金が設定されている場合は、この区分を通常の入力から差し引き、該当する料金を適用してください。
I = input_tokens
C = input_tokens_details.cached_tokens
W = input_tokens_details.cache_write_tokens
O = output_tokens
ordinary_input = I - C - W
cost = ((I - C - W) * P_input
+ C * P_cached
+ W * P_write
+ O * P_output) / 1_000_000
ここでは料金を100万トークンあたりで設定しています。書き込みを別区分として扱わない料金体系では、W = 0を使ってください。この計算式の対象は、ここに列挙したトークン区分です。有料ツールは、該当する料金条件に従って別行で加算してください。
仮の例:入力4000、キャッシュ済み入力3000、キャッシュ書き込み500、出力1000(うち推論600)とします。通常の入力トークンは500、合計は5000トークンです。出力料金の対象は1000トークンで、600という値は診断用に記録します。
会話を続けると入力が再び発生する
履歴を手動で管理する場合、アプリケーションは新しい入力とともに以前のメッセージを渡します。次のリクエストに含まれるメッセージは、再び入力コンテキストになります。そのため、最後のユーザーメッセージだけを測定すると、履歴の使用量を見落とします。
previous_response_idを使う場合、アプリケーションは前の応答への参照を渡し、APIがコンテキストを関連付けます。会話の継続に関する計上ルールによると、チェーン内の以前の入力トークンは再び入力として課金されます。キャッシュによって入力の一部が異なる料金区分になる場合があります。実際にキャッシュが使われたかどうかは、各応答のcached_tokensで確認してください。
最適化の成果を検証する方法
- 基準となるデータを保存する。同じタスク、モデル、成功基準を使い、会話の長さも同程度のものを比較します。
- すべての呼び出しを記録する。応答とタスクのID、モデル、推論設定、ステータス、遅延時間、完全な
usageを記録します。プロンプトのバージョンと料金設定も保存してください。 - タスクごとのコストを合計する。タスク内のすべての呼び出しと、再試行で得られた応答を含めます。主な指標は、正常に完了したタスクあたりのコストです。
- 変化の要因を分ける。通常の入力、キャッシュ読み取りと書き込み、出力、推論の割合を追跡します。集計したキャッシュ比率は、
Cの合計をIの合計で割って求めます。 - 品質と分布の裾を確認する。平均コストに加えて、p95、試行回数、タスクの成功率を比較します。
max_output_tokensパラメーターは、推論を含む生成全体を制限します。上限に達すると、表示されるテキストがないままトークンを消費した場合を含め、応答のステータスがincompleteになることがあります。節約効果を検証する際は、こうした応答も含めてください。最適化の目標を達成したと言えるのは、条件をそろえたタスクが正常に完了し、総コストが下がった場合です。