Claude Platform Docs
  • メッセージ
  • マネージドエージェント
  • 管理

Search...
⌘K
はじめに
Claudeの紹介クイックスタート
Claudeで構築する
機能の概要Messages APIの使用停止理由とフォールバック拒否とフォールバックフォールバッククレジット
モデルの機能
拡張思考適応型思考エフォートタスク予算(ベータ版)高速モード(リサーチプレビュー)構造化出力引用メッセージのストリーミングバッチ処理検索結果拒否のストリーミング多言語サポート埋め込み
ツール
概要ツール使用の仕組みチュートリアル:ツールを使うエージェントの構築ツールの定義ツール呼び出しの処理並列ツール使用Tool Runner(SDK)厳密なツール使用プロンプトキャッシングを使ったツール使用サーバーツールトラブルシューティングWeb検索ツールWeb取得ツールコード実行ツールアドバイザーツールメモリツールBashツールコンピュータ使用ツールテキストエディタツール
ツールインフラストラクチャ
ツールリファレンスツールコンテキストの管理ツールの組み合わせツール検索プログラムによるツール呼び出しきめ細かいツールストリーミング
コンテキスト管理
コンテキストウィンドウコンパクションコンテキスト編集プロンプトキャッシング会話途中のシステムメッセージオーケストレーションモードの構築キャッシュ診断(ベータ版)トークンカウント
ファイルの操作
Files APIPDFサポート画像とビジョン
スキル
概要クイックスタートベストプラクティスエンタープライズ向けスキルAPIでのスキル
MCP
リモートMCPサーバーMCPコネクタ
クラウドプラットフォーム上のClaude
Amazon BedrockAmazon Bedrock(レガシー)AWS上のClaude PlatformMicrosoft FoundryVertex AI

Log in
コンテキスト編集
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
メッセージ/コンテキスト管理

コンテキスト編集

コンテキスト編集により、会話コンテキストが増大するにつれて自動的に管理します。

Was this page helpful?

  • 概要
  • サーバーサイド戦略
  • ツール結果のクリア
  • 思考ブロックのクリア
  • コンテキスト編集はサーバーサイドで実行されます
  • コンテキスト編集とプロンプトキャッシング
  • サポートされているモデル
  • ツール結果のクリアの使用方法
  • 高度な設定
  • 思考ブロックのクリアの使用方法
  • 思考ブロックのクリアの設定オプション
  • 戦略の組み合わせ
  • ツール結果のクリアの設定オプション
  • コンテキスト編集のレスポンス
  • トークンカウント
  • メモリツールとの併用
  • クライアントサイドコンパクション(SDK)
  • コンパクションの動作方法
  • コンパクションの使用
  • 設定オプション
  • デフォルトの要約プロンプト
  • 制限事項
  • コンパクションの監視
  • コンパクションを使用すべき場合
  • 次のステップ


この機能はZero Data Retention(ZDR)の対象です。組織がZDR契約を締結している場合、この機能を通じて送信されたデータは、APIレスポンスが返された後に保存されることはありません。

概要



ほとんどのユースケースでは、サーバーサイドコンパクションが長時間の会話におけるコンテキスト管理の主要な戦略です。このページで説明する戦略は、クリアされるコンテンツをより細かく制御する必要がある特定のシナリオで役立ちます。

「context editing」(コンテキスト編集)を使用すると、会話履歴が増大するにつれて特定のコンテンツを選択的にクリアできます。コストの最適化や制限内に収めることだけでなく、Claudeが参照する内容を積極的にキュレーションすることが目的です。コンテキストは有限のリソースであり、収穫逓減の法則が働き、無関係なコンテンツはモデルの集中力を低下させます。コンテキスト編集により、そのキュレーションを実行時に細かく制御できます。コンテキスト管理の背後にあるより広範な原則については、Effective context engineeringを参照してください。このページでは以下を説明します。

  • ツール結果のクリア - 古いツール結果が不要になった、ツール使用の多いエージェントワークフローに最適
  • 思考ブロックのクリア - 拡張思考を使用する際の思考ブロックを管理し、コンテキストの連続性のために最近の思考を保持するオプションを提供
  • クライアントサイドSDKコンパクション - 要約ベースのコンテキスト管理のためのSDKベースの代替手段(一般的にはサーバーサイドコンパクションが推奨されます)
アプローチ実行場所戦略動作方法
サーバーサイドAPIツール結果のクリア(clear_tool_uses_20250919)
思考ブロックのクリア(clear_thinking_20251015)
プロンプトがClaudeに到達する前に適用されます。会話履歴から特定のコンテンツをクリアします。各戦略は独立して設定できます。
クライアントサイドSDKコンパクションtool_runnerを使用する際にPython、TypeScript、Ruby SDKで利用可能です。要約を生成し、会話履歴全体を置き換えます。クライアントサイドコンパクションを参照してください。

サーバーサイド戦略



コンテキスト編集はベータ版で、ツール結果のクリアと思考ブロックのクリアをサポートしています。有効にするには、APIリクエストでベータヘッダーcontext-management-2025-06-27を使用してください。

この機能に関するフィードバックは、フィードバックフォームからお寄せください。

ツール結果のクリア

clear_tool_uses_20250919戦略は、会話コンテキストが設定したしきい値を超えて増大したときにツール結果をクリアします。これは、ツール使用の多いエージェントワークフローで特に有用です。古いツール結果(ファイルの内容や検索結果など)は、Claudeがそれらを処理した後は不要になります。

アクティブになると、APIは最も古いツール結果を時系列順に自動的にクリアします。APIは各クリアされた結果をプレースホルダーテキストに置き換えるため、Claudeはそれが削除されたことを認識できます。デフォルトでは、ツール結果のみがクリアされます。clear_tool_inputsをtrueに設定することで、ツール結果とツール呼び出し(ツール使用パラメータ)の両方をオプションでクリアできます。

思考ブロックのクリア

clear_thinking_20251015戦略は、拡張思考が有効な場合に会話内のthinkingブロックを管理します。この戦略により、思考の保持を制御できます。推論の連続性を維持するためにより多くの思考ブロックを保持するか、コンテキストスペースを節約するためにより積極的にクリアするかを選択できます。



デフォルトの動作: デフォルトはモデルクラスによって異なります。

モデルクラス以前の思考をすべて保持最後のターンの思考のみ保持
OpusClaude Opus 4.5以降Claude Opus 4.1(非推奨)以前
SonnetClaude Sonnet 4.6以降Claude Sonnet 4.5以前
Haiku(なし)Claude Haiku 4.5までのすべてのモデル

デフォルトを上書きするには、この戦略を使用してください。コードが複数のモデル層で実行される場合は、モデルごとのデフォルトに依存するのではなく、keepを明示的に設定してください。

アシスタントの会話ターンには、複数のコンテンツブロック(たとえば、ツールを使用する場合)や複数の思考ブロック(たとえば、インターリーブ思考を使用する場合)が含まれる場合があります。

コンテキスト編集はサーバーサイドで実行されます

コンテキスト編集は、プロンプトがClaudeに到達する前にサーバーサイドで適用されます。クライアントアプリケーションは、変更されていない完全な会話履歴を保持します。クライアントの状態を編集されたバージョンと同期する必要はありません。通常どおり、ローカルで完全な会話履歴を管理し続けてください。

コンテキスト編集とプロンプトキャッシング

コンテキスト編集とプロンプトキャッシングの相互作用は、戦略によって異なります。

  • ツール結果のクリア:コンテンツがクリアされると、キャッシュされたプロンプトプレフィックスが無効になります。これを考慮して、キャッシュの無効化に見合うだけの十分なトークンをクリアしてください。clear_at_leastパラメータを使用して、毎回最小限のトークン数がクリアされるようにします。コンテンツがクリアされるたびにキャッシュ書き込みコストが発生しますが、後続のリクエストでは新しくキャッシュされたプレフィックスを再利用できます。

  • 思考ブロックのクリア:思考ブロックがコンテキストに保持される(クリアされない)場合、プロンプトキャッシュは保持され、キャッシュヒットが可能になり、入力トークンコストが削減されます。思考ブロックがクリアされる場合、クリアが発生した時点でキャッシュが無効になります。キャッシュパフォーマンスとコンテキストウィンドウの可用性のどちらを優先するかに基づいて、keepパラメータを設定してください。

サポートされているモデル

コンテキスト編集は、サポートされているすべてのClaudeモデルで利用可能です。

ツール結果のクリアの使用方法

ツール結果のクリアを有効にする最も簡単な方法は、戦略タイプのみを指定することです。その他のすべての設定オプションはデフォルト値を使用します。

高度な設定

追加のパラメータを使用して、ツール結果のクリア動作をカスタマイズできます。

思考ブロックのクリアの使用方法

拡張思考が有効な場合にコンテキストとプロンプトキャッシングを効果的に管理するために、思考ブロックのクリアを有効にします。

思考ブロックのクリアの設定オプション

clear_thinking_20251015戦略は、以下の設定をサポートしています。

設定オプションデフォルト説明
keepモデル固有思考ブロックを保持する最近のアシスタントターン数を定義します。最後のNターンを保持するには{type: "thinking_turns", value: N}(Nは0より大きい必要があります)を使用し、すべての思考ブロックを保持するには"all"を使用します。Opus 4.5以降およびSonnet 4.6以降:すべてのターン。それ以前のOpus/SonnetおよびすべてのHaiku:最後のターンのみ。

設定例:

最後の3つのアシスタントターンの思考ブロックを保持する:

すべての思考ブロックを保持する(キャッシュヒットを最大化):

戦略の組み合わせ

思考ブロックのクリアとツール結果のクリアの両方を一緒に使用できます。



複数の戦略を使用する場合、clear_thinking_20251015戦略をedits配列の最初にリストする必要があります。

ツール結果のクリアの設定オプション

設定オプションデフォルト説明
trigger100,000入力トークンコンテキスト編集戦略がアクティブになるタイミングを定義します。プロンプトがこのしきい値を超えると、クリアが開始されます。この値はinput_tokensまたはtool_usesのいずれかで指定できます。
keep3つのツール使用クリア発生後に保持する最近のツール使用/結果ペアの数を定義します。APIは最も古いツールインタラクションを最初に削除し、最新のものを保持します。
clear_at_leastなし戦略がアクティブになるたびにクリアされる最小トークン数を保証します。APIが指定された量以上をクリアできない場合、戦略は適用されません。これは、コンテキストのクリアがプロンプトキャッシュを破棄する価値があるかどうかを判断するのに役立ちます。
exclude_toolsなしツール使用と結果を決してクリアしないツール名のリスト。重要なコンテキストを保持するのに役立ちます。
clear_tool_inputsfalse

コンテキスト編集のレスポンス

context_managementレスポンスフィールドを使用して、リクエストに適用されたコンテキスト編集を確認できます。また、クリアされたコンテンツと入力トークンに関する有用な統計情報も確認できます。

Output
{
  "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
  "type": "message",
  "role": "assistant",
  "content": [
    // ...
  ],
  "usage": {
    // ...
  },
  "context_management": {
    "applied_edits": [
      // When using `clear_thinking_20251015`
      {
        "type": "clear_thinking_20251015",
        "cleared_thinking_turns": 3,
        "cleared_input_tokens": 15000
      },
      // When using `clear_tool_uses_20250919`
      {
        "type": "clear_tool_uses_20250919",
        "cleared_tool_uses": 8,
        "cleared_input_tokens": 50000
      }
    ]
  }
}

ストリーミングレスポンスの場合、コンテキスト編集は最後のmessage_deltaイベントに含まれます。

Streaming Response
{
  "type": "message_delta",
  "delta": {
    "stop_reason": "end_turn",
    "stop_sequence": null
  },
  "usage": {
    "output_tokens": 1024
  },
  "context_management": {
    "applied_edits": [
      // ...
    ]
  }
}

トークンカウント

トークンカウントエンドポイントはコンテキスト管理をサポートしており、コンテキスト編集が適用された後にプロンプトが使用するトークン数をプレビューできます。

Output
{
  "input_tokens": 25000,
  "context_management": {
    "original_input_tokens": 70000
  }
}

レスポンスには、コンテキスト管理が適用された後の最終トークン数(input_tokens)と、クリアが発生する前の元のトークン数(original_input_tokens)の両方が表示されます。

メモリツールとの併用

コンテキスト編集はメモリツールと組み合わせることができます。会話コンテキストが設定されたクリアしきい値に近づくと、Claudeは重要な情報を保存するための自動警告を受け取ります。これにより、Claudeはツール結果やコンテキストが会話履歴からクリアされる前に、それらをメモリファイルに保存できます。

この組み合わせにより、以下が可能になります。

  • 重要なコンテキストの保持: Claudeは、ツール結果がクリアされる前に、それらから重要な情報をメモリファイルに書き込むことができます
  • 長時間実行ワークフローの維持: 情報を永続ストレージにオフロードすることで、コンテキスト制限を超えてしまうエージェントワークフローを実行可能にします
  • オンデマンドでの情報アクセス: Claudeは、すべてをアクティブなコンテキストウィンドウに保持するのではなく、必要に応じてメモリファイルから以前にクリアされた情報を検索できます

たとえば、Claudeが多くの操作を実行するファイル編集ワークフローでは、コンテキストが増大するにつれて、Claudeは完了した変更をメモリファイルに要約できます。ツール結果がクリアされても、Claudeはメモリシステムを通じてその情報へのアクセスを保持し、効果的に作業を続けることができます。

両方の機能を一緒に使用するには、APIリクエストでそれらを有効にします。

コマンドや例を含むメモリツールの完全なリファレンスについては、メモリツールを参照してください。

クライアントサイドコンパクション(SDK)



AnthropicはSDKコンパクションよりもサーバーサイドコンパクションを推奨しています。 サーバーサイドコンパクションは、統合の複雑さが少なく、トークン使用量の計算が改善され、クライアントサイドの制限がない状態で、コンテキスト管理を自動的に処理します。要約プロセスをクライアントサイドで制御する必要がある場合にのみ、SDKコンパクションを使用してください。

compaction_controlパラメータはPython、TypeScript、Ruby SDKで非推奨となっており、将来のバージョンで削除される予定です。有効にすると、SDKは非推奨警告を出力します。ツールランナーでサーバーサイドコンパクションを使用するには、リクエストのcontext_managementパラメータでcompact_20260112編集を渡してください。



コンパクションは、tool_runnerメソッドを使用する際にPython、TypeScript、Ruby SDKで利用可能です。

「compaction」(コンパクション)は、トークン使用量が大きくなりすぎたときに要約を生成することで、会話コンテキストを自動的に管理するSDK機能です。コンテンツをクリアするサーバーサイドのコンテキスト編集戦略とは異なり、コンパクションはClaudeに会話履歴を要約するよう指示し、その要約で履歴全体を置き換えます。これにより、Claudeはコンテキストウィンドウを超えてしまう長時間実行タスクを継続して処理できます。

コンパクションの動作方法

コンパクションが有効な場合、SDKは各モデルレスポンスの後にトークン使用量を監視します。

  1. しきい値チェック: SDKは合計トークンをinput_tokens + cache_creation_input_tokens + cache_read_input_tokens + output_tokensとして計算します。
  2. 要約生成: しきい値を超えると、要約プロンプトがユーザーターンとして挿入され、Claudeは<summary></summary>タグで囲まれた構造化された要約を生成します。
  3. コンテキストの置き換え: SDKは要約を抽出し、メッセージ履歴全体をそれで置き換えます。
  4. 継続: 会話は要約から再開され、Claudeは中断したところから作業を続けます。

コンパクションの使用

tool_runner呼び出しにcompaction_controlを追加して、トークン使用量がしきい値を超えたときに自動要約を有効にします。

コンパクション中に何が起こるか

会話が進むにつれて、メッセージ履歴が蓄積されます。

コンパクション前(100kトークンに近づいている):

[
  { "role": "user", "content": "Analyze all files and write a report..." },
  { "role": "assistant", "content": "I'll help. Let me start by reading..." },
  {
    "role": "user",
    "content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }]
  },
  { "role": "assistant", "content": "Based on file1.txt, I see..." },
  {
    "role": "user",
    "content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }]
  },
  { "role": "assistant", "content": "After analyzing file2.txt..." }
  // ... 50 more exchanges like this ...
]

トークンがしきい値を超えると、SDKは要約リクエストを挿入し、Claudeが要約を生成します。その後、履歴全体が置き換えられます。

コンパクション後(約2〜3kトークンに戻る):

[
  {
    "role": "assistant",
    "content": "# Task Overview\nThe user requested analysis of directory files to produce a summary report...\n\n# Current State\nAnalyzed 52 files across 3 subdirectories. Key findings documented in report.md...\n\n# Important Discoveries\n- Configuration files use YAML format\n- Found 3 deprecated dependencies\n- Test coverage at 67%\n\n# Next Steps\n1. Analyze remaining files in /src/legacy\n2. Complete final report sections...\n\n# Context to Preserve\nUser prefers markdown format with executive summary first..."
  }
]

Claudeは、この要約が元の会話履歴であるかのように、そこから作業を続けます。

設定オプション

パラメータ型必須デフォルト説明
enabledbooleanはい-自動コンパクションを有効にするかどうか
context_token_thresholdnumberいいえ100,000コンパクションがトリガーされるトークン数
modelstringいいえメインモデルと同じ要約生成に使用するモデル
summary_promptstringいいえデフォルトの要約プロンプトを参照要約生成用のカスタムプロンプト

トークンしきい値の選択

しきい値は、コンパクションが発生するタイミングを決定します。しきい値が低いほど、より小さなコンテキストウィンドウでより頻繁にコンパクションが発生します。しきい値が高いほど、より多くのコンテキストが許容されますが、制限に達するリスクがあります。

要約に別のモデルを使用する

要約生成には、より高速または安価なモデルを使用できます。

カスタム要約プロンプト

ドメイン固有のニーズに合わせてカスタムプロンプトを提供できます。プロンプトでは、Claudeに要約を<summary></summary>タグで囲むよう指示する必要があります。

デフォルトの要約プロンプト

組み込みの要約プロンプトは、以下を含む構造化された継続要約を作成するようClaudeに指示します。

  1. タスク概要: ユーザーの主要なリクエスト、成功基準、制約。
  2. 現在の状態: 完了した内容、変更されたファイル、生成された成果物。
  3. 重要な発見: 技術的制約、行われた決定、解決されたエラー、失敗したアプローチ。
  4. 次のステップ: 必要な具体的なアクション、ブロッカー、優先順位。
  5. 保持すべきコンテキスト: ユーザーの好み、ドメイン固有の詳細、行われたコミットメント。

この構造により、Claudeは重要なコンテキストを失ったり、間違いを繰り返したりすることなく、効率的に作業を再開できます。

制限事項

サーバーサイドツール



ウェブ検索やウェブフェッチなどのサーバーサイドツールを使用する場合、コンパクションには特別な考慮が必要です。

サーバーサイドツールを使用する場合、SDKがトークン使用量を誤って計算し、コンパクションが間違ったタイミングでトリガーされる可能性があります。

たとえば、ウェブ検索操作の後、APIレスポンスは次のように表示される場合があります。

Output
{
  "usage": {
    "input_tokens": 63000,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 270000,
    "output_tokens": 1400
  }
}

SDKは合計使用量を63,000 + 0 + 270,000 + 1,400 = 334,400トークンとして計算します。ただし、cache_read_input_tokensの値には、サーバーサイドツールによって行われた複数の内部API呼び出しからの累積読み取りが含まれており、実際の会話コンテキストではありません。実際のコンテキスト長は63,000のinput_tokensのみかもしれませんが、SDKは334kと認識し、コンパクションを早期にトリガーします。

回避策:

  • トークンカウントエンドポイントを使用して正確なコンテキスト長を取得する
  • サーバーサイドツールを多用する場合はコンパクションを避ける

ツール使用のエッジケース

ツール使用レスポンスが保留中にSDKがコンパクションをトリガーすると、要約を生成する前にメッセージ履歴からツール使用ブロックが削除されます。Claudeは、まだ必要な場合、要約から再開した後にツール呼び出しを再発行します。

コンパクションの監視

コンパクションがいつトリガーされるかを理解することで、しきい値を調整し、期待される動作を確認できます。

コンパクションを使用すべき場合

適したユースケース:

  • 多くのファイルやデータソースを処理する長時間実行エージェントタスク
  • 大量の情報を蓄積するリサーチワークフロー
  • 明確で測定可能な進捗があるマルチステップタスク
  • 会話の外部に永続化される成果物(ファイル、レポート)を生成するタスク

あまり適さないユースケース:

  • 会話の初期の詳細を正確に思い出す必要があるタスク
  • サーバーサイドツールを多用するワークフロー
  • 多くの変数にわたって正確な状態を維持する必要があるタスク

次のステップ

コンパクション

ほとんどのユースケースで推奨される戦略であるサーバーサイドコンパクションで、長い会話を管理します。

プロンプトキャッシング

プロンプトプレフィックスをキャッシュすることでコストとレイテンシを削減し、コンテキスト編集がキャッシュとどのように相互作用するかを学びます。

response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Search for recent developments in AI"}],
    tools=[{"type": "web_search_20250305", "name": "web_search"}],
    betas=["context-management-2025-06-27"],
    context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "Create a simple command line calculator app using Python",
        }
    ],
    tools=[
        {
            "type": "text_editor_20250728",
            "name": "str_replace_based_edit_tool",
            "max_characters": 10000,
        },
        {"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
    ],
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_tool_uses_20250919",
                # しきい値を超えたときにクリアをトリガー
                "trigger": {"type": "input_tokens", "value": 30000},
                # クリア後に保持するツール使用の数
                "keep": {"type": "tool_uses", "value": 3},
                # オプション:少なくともこのトークン数をクリア
                "clear_at_least": {"type": "input_tokens", "value": 5000},
                # これらのツールをクリア対象から除外
                "exclude_tools": ["web_search"],
            }
        ]
    },
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Hello"}],
    thinking={"type": "adaptive"},
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_thinking_20251015",
                "keep": {"type": "thinking_turns", "value": 2},
            }
        ]
    },
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Hello"}],
    thinking={"type": "adaptive"},
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_thinking_20251015",
                "keep": {"type": "thinking_turns", "value": 3},
            }
        ]
    },
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Hello"}],
    thinking={"type": "adaptive"},
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_thinking_20251015",
                "keep": "all",
            }
        ]
    },
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=16000,
    messages=[
        {
            "role": "user",
            "content": "Search for the latest developments in quantum error correction and summarize the key breakthroughs.",
        }
    ],
    thinking={"type": "adaptive"},
    tools=[
        {
            "type": "web_search_20250305",
            "name": "web_search",
            "max_uses": 5,
        }
    ],
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_thinking_20251015",
                "keep": {"type": "thinking_turns", "value": 2},
            },
            {
                "type": "clear_tool_uses_20250919",
                "trigger": {"type": "input_tokens", "value": 50000},
                "keep": {"type": "tool_uses", "value": 5},
            },
        ]
    },
)

print(response)
ツール呼び出しパラメータをツール結果と一緒にクリアするかどうかを制御します。デフォルトでは、Claudeの元のツール呼び出しを表示したまま、ツール結果のみがクリアされます。
response = client.beta.messages.count_tokens(
    model="claude-opus-4-8",
    messages=[{"role": "user", "content": "Continue our conversation..."}],
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {
                "type": "clear_tool_uses_20250919",
                "trigger": {"type": "input_tokens", "value": 30000},
                "keep": {"type": "tool_uses", "value": 5},
            }
        ]
    },
)

print(f"Original tokens: {response.context_management.original_input_tokens}")
print(f"After clearing: {response.input_tokens}")
print(
    f"Savings: {response.context_management.original_input_tokens - response.input_tokens} tokens"
)
response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Hello"}],
    tools=[{"type": "memory_20250818", "name": "memory"}],
    betas=["context-management-2025-06-27"],
    context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)