メインコンテンツへスキップ
コンテキスト編集は現在ベータ版で、ツール結果クリアと思考ブロッククリアのサポートがあります。これを有効にするには、APIリクエストでベータヘッダー context-management-2025-06-27 を使用してください。この機能に関するフィードバックを共有するには、フィードバックフォームからお問い合わせください。

概要

コンテキスト編集を使用すると、会話コンテキストの成長に伴い自動的に管理でき、コストを最適化し、コンテキストウィンドウの制限内に留まることができます。APIはコンテキストを管理するためのさまざまな戦略を提供します:
  • ツール結果クリア (clear_tool_uses_20250919):会話コンテキストが設定されたしきい値を超えた場合、ツール使用/結果ペアを自動的にクリアします
  • 思考ブロッククリア (clear_thinking_20251015):思考ブロックを管理し、前のターンから古い思考ブロックをクリアします
各戦略は独立して設定でき、特定のユースケースを最適化するために一緒に適用できます。

コンテキスト編集戦略

ツール結果クリア

clear_tool_uses_20250919 戦略は、会話コンテキストが設定されたしきい値を超えた場合、ツール結果をクリアします。有効化されると、APIは時系列順に最も古いツール結果を自動的にクリアし、ツール結果が削除されたことをClaudeに知らせるプレースホルダーテキストで置き換えます。デフォルトでは、ツール結果のみがクリアされます。clear_tool_inputs を true に設定することで、ツール結果とツール呼び出し(ツール使用パラメータ)の両方をクリアすることもできます。

思考ブロッククリア

clear_thinking_20251015 戦略は、拡張思考が有効な場合、会話内の thinking ブロックを管理します。この戦略は、前のターンから古い思考ブロックを自動的にクリアします。
デフォルト動作:拡張思考が有効で clear_thinking_20251015 戦略を設定しない場合、APIは自動的に最後のアシスタントターンからの思考ブロックのみを保持します(keep: {type: "thinking_turns", value: 1} と同等)。キャッシュヒットを最大化するには、keep: "all" を設定してすべての思考ブロックを保持します。
アシスタント会話ターンには複数のコンテンツブロック(例:ツール使用時)と複数の思考ブロック(例:インターリーブ思考)が含まれる場合があります。
コンテキスト編集はサーバー側で実行されますコンテキスト編集はプロンプトがClaudeに到達する前にサーバー側で適用されます。クライアントアプリケーションは完全で未修正の会話履歴を保持します。編集されたバージョンとクライアント状態を同期する必要はありません。通常通りローカルで完全な会話履歴を管理し続けてください。
コンテキスト編集とプロンプトキャッシングコンテキスト編集とプロンプトキャッシングの相互作用は戦略によって異なります:
  • ツール結果クリア:コンテンツがクリアされるとキャッシュされたプロンプトプレフィックスが無効になります。これに対応するために、キャッシュ無効化を価値のあるものにするために十分なトークンをクリアすることをお勧めします。clear_at_least パラメータを使用して、毎回クリアされるトークンの最小数を確保します。コンテンツがクリアされるたびにキャッシュ書き込みコストが発生しますが、その後のリクエストは新しくキャッシュされたプレフィックスを再利用できます。
  • 思考ブロッククリア:思考ブロックがコンテキストに保持されている場合(クリアされていない場合)、プロンプトキャッシュが保持され、キャッシュヒットが有効になり、入力トークンコストが削減されます。思考ブロックがクリアされる場合、キャッシュはクリアが発生する時点で無効になります。キャッシュパフォーマンスまたはコンテキストウィンドウの可用性を優先するかどうかに基づいて keep パラメータを設定します。

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

コンテキスト編集は以下で利用可能です:
  • Claude Opus 4.1 (claude-opus-4-1-20250805)
  • Claude Opus 4 (claude-opus-4-20250514)
  • Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
  • Claude Sonnet 4 (claude-sonnet-4-20250514)
  • Claude Haiku 4.5 (claude-haiku-4-5-20251001)

ツール結果クリア使用法

ツール結果クリアを有効にする最も簡単な方法は、戦略タイプのみを指定することです。他のすべての設定オプションはデフォルト値を使用します:
curl https://api.anthropic.com/v1/messages \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "content-type: application/json" \
    --header "anthropic-beta: context-management-2025-06-27" \
    --data '{
        "model": "claude-sonnet-4-5",
        "max_tokens": 4096,
        "messages": [
            {
                "role": "user",
                "content": "Search for recent developments in AI"
            }
        ],
        "tools": [
            {
                "type": "web_search_20250305",
                "name": "web_search"
            }
        ],
        "context_management": {
            "edits": [
                {"type": "clear_tool_uses_20250919"}
            ]
        }
    }'

高度な設定

追加のパラメータを使用してツール結果クリア動作をカスタマイズできます:
curl https://api.anthropic.com/v1/messages \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "content-type: application/json" \
    --header "anthropic-beta: context-management-2025-06-27" \
    --data '{
        "model": "claude-sonnet-4-5",
        "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
            }
        ],
        "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"]
                }
            ]
        }
    }'

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

拡張思考が有効な場合、思考ブロッククリアを有効にしてコンテキストとプロンプトキャッシングを効果的に管理します:
curl https://api.anthropic.com/v1/messages \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "content-type: application/json" \
    --header "anthropic-beta: context-management-2025-06-27" \
    --data '{
        "model": "claude-sonnet-4-5-20250929",
        "max_tokens": 1024,
        "messages": [...],
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10000
        },
        "context_management": {
            "edits": [
                {
                    "type": "clear_thinking_20251015",
                    "keep": {
                        "type": "thinking_turns",
                        "value": 2
                    }
                }
            ]
        }
    }'

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

clear_thinking_20251015 戦略は以下の設定をサポートしています:
設定オプションデフォルト説明
keep{type: "thinking_turns", value: 1}保持する最近のアシスタントターン(思考ブロック付き)の数を定義します。最後のN個のターンを保持するには {type: "thinking_turns", value: N} を使用します(Nは0より大きい必要があります)。または、すべての思考ブロックを保持するには "all" を使用します。
設定例:
// 最後の3つのアシスタントターンから思考ブロックを保持
{
  "type": "clear_thinking_20251015",
  "keep": {
    "type": "thinking_turns",
    "value": 3
  }
}

// すべての思考ブロックを保持(キャッシュヒットを最大化)
{
  "type": "clear_thinking_20251015",
  "keep": "all"
}

戦略の組み合わせ

思考ブロッククリアとツール結果クリアを一緒に使用できます:
複数の戦略を使用する場合、clear_thinking_20251015 戦略は edits 配列の最初にリストされる必要があります。
response = client.beta.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[...],
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    tools=[...],
    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
                }
            }
        ]
    }
)

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

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

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

context_management レスポンスフィールドを使用して、リクエストに適用されたコンテキスト編集と、クリアされたコンテンツと入力トークンに関する有用な統計情報を確認できます。
Response
{
    "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
    "type": "message",
    "role": "assistant",
    "content": [...],
    "usage": {...},
    "context_management": {
        "applied_edits": [
            // `clear_thinking_20251015` を使用する場合
            {
                "type": "clear_thinking_20251015",
                "cleared_thinking_turns": 3,
                "cleared_input_tokens": 15000
            },
            // `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": [...]
    }
}

トークンカウント

トークンカウントエンドポイントはコンテキスト管理をサポートしており、コンテキスト編集が適用された後、プロンプトが使用するトークン数をプレビューできます。
curl https://api.anthropic.com/v1/messages/count_tokens \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "content-type: application/json" \
    --header "anthropic-beta: context-management-2025-06-27" \
    --data '{
        "model": "claude-sonnet-4-5",
        "messages": [
            {
                "role": "user",
                "content": "Continue our conversation..."
            }
        ],
        "tools": [...],
        "context_management": {
            "edits": [
                {
                    "type": "clear_tool_uses_20250919",
                    "trigger": {
                        "type": "input_tokens",
                        "value": 30000
                    },
                    "keep": {
                        "type": "tool_uses",
                        "value": 5
                    }
                }
            ]
        }
    }'
Response
{
    "input_tokens": 25000,
    "context_management": {
        "original_input_tokens": 70000
    }
}
レスポンスは、コンテキスト管理が適用された後の最終トークンカウント(input_tokens)とクリアが発生する前の元のトークンカウント(original_input_tokens)の両方を表示します。

メモリツールとの使用

コンテキスト編集はメモリツールと組み合わせることができます。会話コンテキストが設定されたクリアしきい値に近づくと、Claudeは重要な情報を保持するための自動警告を受け取ります。これにより、Claudeは会話履歴からクリアされる前に、ツール結果またはコンテキストをメモリファイルに保存できます。 この組み合わせにより、以下が可能になります:
  • 重要なコンテキストを保持:Claudeはツール結果から重要な情報をメモリファイルに書き込んでから、それらの結果が会話履歴からクリアされます
  • 長時間実行されるワークフローを維持:情報を永続的なストレージにオフロードすることで、コンテキスト制限を超えるエージェントワークフローを有効にします
  • オンデマンドで情報にアクセス:Claudeは、アクティブなコンテキストウィンドウにすべてを保持するのではなく、必要に応じてメモリファイルから以前にクリアされた情報を検索できます
例えば、Claudeが多くの操作を実行するファイル編集ワークフローでは、Claudeはコンテキストが成長するにつれて完了した変更をメモリファイルに要約できます。ツール結果がクリアされると、Claudeはメモリシステムを通じてその情報へのアクセスを保持し、効果的に作業を続けることができます。 両方の機能を一緒に使用するには、APIリクエストで有効にします:
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=4096,
    messages=[...],
    tools=[
        {
            "type": "memory_20250818",
            "name": "memory"
        },
        # Your other tools
    ],
    betas=["context-management-2025-06-27"],
    context_management={
        "edits": [
            {"type": "clear_tool_uses_20250919"}
        ]
    }
)