メインコンテンツへスキップ
どのリクエストでも異なる reasoning_effort(Chat Completions)または reasoning.effort(Responses)を送ると、Phaseo はプロンプトキャッシュをやり直さずに Claude の度合いを変更します。Claude の推論を毎回変更せずに送り返している限り、コードのほかの部分を変える必要はありません。 Phaseo は会話の最初のリクエストの度合いを Claude に送り続け、各変更を新しいメッセージの後に度合いマーカーとして追加します。マーカーより前の部分はすべて同じままなので、Claude はそれをキャッシュから読み取ります。推論を削除すると、Phaseo は代わりにトップレベルの度合いを変更し、Claude は最初の返信以降のすべてをキャッシュから読み取らずにもう一度処理します。

Phaseo がキャッシュを保つしくみ

Claude がキャッシュされた会話を読み取るのは、リクエストの冒頭がバイト単位で同じ場合だけで、トップレベルの度合いはその冒頭の一部です。Anthropic のメッセージ単位の度合いは、代わりに messages の中で度合いを変更します。空の content と output_config.effort を持つ system メッセージを使います。Phaseo はこれらのマーカーを自動で書き込みます。 Phaseo はリクエスト間で何も保存しません。Claude の各返信の最後には、実行時の度合いを記録した推論エントリーが 1 つあり、Phaseo は送り返されたエントリーから、以前のすべてのマーカーを同じ場所に再構築します。 送り返したメッセージが変更されることはありません。マーカーは Phaseo が Claude に送るリクエストの中にだけ存在します。

推論を変更せずに送り返す

すべての推論エントリーを、受け取ったとおりに毎回のリクエストで送り返してください。Chat の reasoning_details、Responses の reasoning アイテム、Anthropic の thinking ブロックが対象で、暗号化されているかどうかは問いません。削除、編集、並べ替え、要約はしないでください。これらがないと、度合いの変更で Claude のキャッシュがやり直しになり、Claude はツールループのステップ間で推論を失います。
度合いエントリーにはテキストがありません。Chat Completions では、reasoning_details の最後の reasoning.encrypted エントリーです。
Responses では、output の最後の reasoning アイテムで、id は rs_effort_ で始まります。
この値は不透明で、Phaseo は会話がどのプロバイダーに届く前にもこれを取り除きます。

コードで度合いを変更する

Claude の返信全体を会話に追加してから、次のリクエストで希望する度合いを設定します。トップレベルの cache_control は Claude ルートでキャッシュを有効にします。プロンプトキャッシュを参照してください。

Chat Completions

Responses

Phaseo はレスポンスを保存しないため、すべての output アイテムを含む会話全体を input で送ってください。

Anthropic Messages

/v1/messages では、マーカーを自分で送ります。空の content と output_config.effort を持つ system メッセージです。トップレベルの output_config.effort は毎回のリクエストで同じにし、以降のリクエストでも各マーカーを同じ位置に残してください。mid-conversation-output-config-2026-07-01 ベータヘッダーは Phaseo が追加するため、送る必要はありません。
cURL
マーカーの位置によって、新しい度合いがいつ始まるかが決まります。
  • ユーザーメッセージの直後: そのメッセージへの Claude の返信が新しい度合いを使います。
  • それ以外の場所(上の例のように Claude の返信と次のメッセージの間など):新しい度合いは次のメッセージから始まります。
ツールの結果だけを含むユーザーメッセージは、新しいメッセージとして数えられません。メッセージ単位の度合いに対応していないルートでは、Phaseo はマーカーを取り除き、有効な度合いをトップレベルの度合いとして送ります。

変更でキャッシュがやり直しになる場合

次の場合、Phaseo はほかのプロバイダーと同様にトップレベルの度合いを変更します。
  • 推論がない。 クライアントが reasoning_details または reasoning アイテムを削除したため、最新の Claude の返信に度合いエントリーがありません。
  • 変更がツールループのステップ間で行われる。 最新のメッセージにツールの結果しか含まれないため、マーカーは次のメッセージからしか適用されません。Phaseo はこのステップが指定した度合いで実行されるようにトップレベルの度合いを変更し、以降の変更では再びマーカーを使います。
  • リクエストが度合いを設定していない、または推論を無効にしている。 毎回のリクエストで reasoning_effort または reasoning.effort を送ってください。"none" と reasoning.enabled: false は推論を無効にします。
  • ルートが対応していない。 対応モデルを参照してください。
トップレベルでの変更では、Claude の最初の返信より前の会話部分はキャッシュに残ります。Claude はその返信以降のすべてをもう一度処理し、新しい入力として課金します。

対応モデル

Azure 上の Claude を含むその他のすべてのルートでは、度合いの変更はトップレベルに送られます。

キャッシュが保たれたことを確認する

変更後のリクエストでキャッシュの数を確認してください。Chat Completions では usage.prompt_tokens_details.cached_tokens、Responses では usage.input_tokens_details.cached_tokens、Anthropic Messages では usage.cache_read_input_tokens です。すべてのフィールドは使用量と料金のフィールドに記載されています。 2026 年 11 月 11 日に、anthropic/claude-haiku-5.5 で同じ 5 リクエストの Chat Completions 会話を、度合いエントリーを送り返した場合と送り返さなかった場合の 2 回計測しました。度合いは high、high、low、low、high で、2 番目のメッセージで 3,400 トークンのドキュメントが届きました。
最終更新日 2026年11月12日