Эта функция соответствует требованиям Zero Data Retention (ZDR) (нулевого хранения данных). Если у вашей организации действует соглашение ZDR, данные, отправленные через эту функцию, не сохраняются после возврата ответа API.
Для большинства сценариев использования серверное сжатие является основной стратегией управления контекстом в длительных разговорах. Стратегии, описанные на этой странице, полезны для специфических сценариев, где вам нужен более детальный контроль над тем, какое содержимое очищается.
Редактирование контекста позволяет вам выборочно очищать определённое содержимое из истории разговора по мере её роста. Помимо оптимизации затрат и соблюдения лимитов, речь идёт об активном отборе того, что видит Claude: контекст — это конечный ресурс с убывающей отдачей, и нерелевантное содержимое ухудшает фокусировку модели. Редактирование контекста даёт вам детальный контроль над этим отбором во время выполнения. Более широкие принципы управления контекстом описаны в статье Effective context engineering. На этой странице рассматриваются:
| Подход | Где выполняется | Стратегии | Как это работает |
|---|---|---|---|
| Серверный | API | Очистка результатов инструментов (clear_tool_uses_20250919)Очистка блоков мышления ( clear_thinking_20251015) | Применяется до того, как подсказка достигает Claude. Очищает определённое содержимое из истории разговора. Каждая стратегия может быть настроена независимо. |
| Клиентский | SDK | Сжатие | Доступно в SDK для Python, TypeScript и Ruby при использовании tool_runner. Генерирует резюме и заменяет полную историю разговора. См. Клиентское сжатие. |
Редактирование контекста находится в бета-версии с поддержкой очистки результатов инструментов и очистки блоков мышления. Чтобы включить его, используйте бета-заголовок context-management-2025-06-27 в ваших запросах к API.
Поделитесь отзывом об этой функции через форму обратной связи.
Стратегия clear_tool_uses_20250919 очищает результаты инструментов, когда контекст разговора превышает настроенный вами порог. Это особенно полезно для агентных рабочих процессов с интенсивным использованием инструментов. Старые результаты инструментов (например, содержимое файлов или результаты поиска) больше не нужны после того, как Claude их обработал.
При активации API автоматически очищает самые старые результаты инструментов в хронологическом порядке. API заменяет каждый очищенный результат текстом-заполнителем, чтобы Claude знал, что он был удалён. По умолчанию очищаются только результаты инструментов. Вы можете дополнительно очищать как результаты инструментов, так и вызовы инструментов (параметры использования инструментов), установив clear_tool_inputs в значение true.
Стратегия clear_thinking_20251015 управляет блоками thinking в разговорах, когда включено расширенное мышление. Эта стратегия даёт вам контроль над сохранением мышления: вы можете выбрать сохранение большего количества блоков мышления для поддержания непрерывности рассуждений или очищать их более агрессивно для экономии места в контексте.
Поведение по умолчанию: значение по умолчанию зависит от класса модели.
| Класс модели | Сохранять всё предыдущее мышление | Сохранять мышление только последнего хода |
|---|---|---|
| Opus | Claude Opus 4.5 и новее | Claude Opus 4.1 (устаревшая) и более ранние |
| Sonnet | Claude Sonnet 4.6 и новее | Claude Sonnet 4.5 и более ранние |
| Haiku | (нет) | Все модели вплоть до Claude Haiku 4.5 |
Используйте эту стратегию, чтобы переопределить поведение по умолчанию. Если ваш код работает с несколькими уровнями моделей, задавайте keep явно, а не полагайтесь на значение по умолчанию для конкретной модели.
Ход разговора ассистента может включать несколько блоков содержимого (например, при использовании инструментов) и несколько блоков мышления (например, при чередующемся мышлении).
Редактирование контекста применяется на стороне сервера до того, как подсказка достигает Claude. Ваше клиентское приложение сохраняет полную, неизменённую историю разговора. Вам не нужно синхронизировать состояние клиента с отредактированной версией. Продолжайте управлять полной историей разговора локально, как обычно.
Взаимодействие редактирования контекста с кэшированием подсказок зависит от стратегии:
Очистка результатов инструментов: инвалидирует кэшированные префиксы подсказок при очистке содержимого. Чтобы учесть это, очищайте достаточно токенов, чтобы инвалидация кэша была оправдана. Используйте параметр clear_at_least, чтобы гарантировать очистку минимального количества токенов каждый раз. Вы будете нести затраты на запись в кэш каждый раз при очистке содержимого, но последующие запросы смогут повторно использовать новый кэшированный префикс.
Очистка блоков мышления: когда блоки мышления сохраняются в контексте (не очищаются), кэш подсказок сохраняется, что обеспечивает попадания в кэш и снижает затраты на входные токены. Когда блоки мышления очищаются, кэш инвалидируется в точке, где происходит очистка. Настройте параметр keep в зависимости от того, что для вас приоритетнее — производительность кэша или доступность контекстного окна.
Редактирование контекста доступно на всех поддерживаемых моделях 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},
}
]
},
)Стратегия clear_thinking_20251015 поддерживает следующую конфигурацию:
| Параметр конфигурации | По умолчанию | Описание |
|---|---|---|
keep | Зависит от модели | Определяет, сколько последних ходов ассистента с блоками мышления сохранять. Используйте {type: "thinking_turns", value: N}, где N должно быть > 0, чтобы сохранить последние N ходов, или "all", чтобы сохранить все блоки мышления. Opus 4.5+ и Sonnet 4.6+: все ходы. Более ранние Opus/Sonnet и все Haiku: только последний ход. |
Примеры конфигураций:
Сохранить блоки мышления из последних 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": {"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",
}
]
},
)Вы можете использовать очистку блоков мышления и очистку результатов инструментов вместе:
При использовании нескольких стратегий стратегия clear_thinking_20251015 должна быть указана первой в массиве edits.
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)| Параметр конфигурации | По умолчанию | Описание |
|---|---|---|
trigger | 100 000 входных токенов | Определяет, когда активируется стратегия редактирования контекста. Как только подсказка превышает этот порог, начинается очистка. Вы можете указать это значение либо в input_tokens, либо в tool_uses. |
keep | 3 использования инструментов | Определяет, сколько последних пар «использование инструмента / результат» сохранять после очистки. API удаляет самые старые взаимодействия с инструментами первыми, сохраняя самые последние. |
clear_at_least | Нет | Гарантирует очистку минимального количества токенов каждый раз при активации стратегии. Если API не может очистить хотя бы указанное количество, стратегия не будет применена. Это помогает определить, стоит ли очистка контекста нарушения кэша подсказок. |
exclude_tools | Нет | Список имён инструментов, чьи использования и результаты никогда не должны очищаться. Полезно для сохранения важного контекста. |
clear_tool_inputs | false | Управляет тем, очищаются ли параметры вызова инструмента вместе с результатами инструмента. По умолчанию очищаются только результаты инструментов, а исходные вызовы инструментов Claude остаются видимыми. |
Вы можете увидеть, какие правки контекста были применены к вашему запросу, используя поле ответа context_management, вместе с полезной статистикой об очищенном содержимом и входных токенах.
{
"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:
{
"type": "message_delta",
"delta": {
"stop_reason": "end_turn",
"stop_sequence": null
},
"usage": {
"output_tokens": 1024
},
"context_management": {
"applied_edits": [
// ...
]
}
}Эндпоинт подсчёта токенов поддерживает управление контекстом, позволяя вам предварительно увидеть, сколько токенов будет использовать ваша подсказка после применения редактирования контекста.
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"
){
"input_tokens": 25000,
"context_management": {
"original_input_tokens": 70000
}
}Ответ показывает как итоговое количество токенов после применения управления контекстом (input_tokens), так и исходное количество токенов до какой-либо очистки (original_input_tokens).
Редактирование контекста можно комбинировать с инструментом памяти. Когда контекст вашего разговора приближается к настроенному порогу очистки, Claude получает автоматическое предупреждение о необходимости сохранить важную информацию. Это позволяет Claude сохранять результаты инструментов или контекст в свои файлы памяти до того, как они будут очищены из истории разговора.
Эта комбинация позволяет вам:
Например, в рабочем процессе редактирования файлов, где Claude выполняет множество операций, Claude может резюмировать выполненные изменения в файлы памяти по мере роста контекста. Когда результаты инструментов очищаются, Claude сохраняет доступ к этой информации через свою систему памяти и может продолжать эффективно работать.
Чтобы использовать обе функции вместе, включите их в вашем запросе к API:
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"}]},
)Полную справку по инструменту памяти, включая команды и примеры, см. в разделе Инструмент памяти.
Anthropic рекомендует серверное сжатие вместо сжатия через SDK. Серверное сжатие автоматически управляет контекстом с меньшей сложностью интеграции, лучшим расчётом использования токенов и без клиентских ограничений. Используйте сжатие через SDK только в том случае, если вам специально нужен клиентский контроль над процессом резюмирования.
Параметр compaction_control устарел в SDK для Python, TypeScript и Ruby и будет удалён в будущей версии. SDK выдают предупреждение об устаревании при его включении. Чтобы использовать серверное сжатие с исполнителем инструментов, передайте правку compact_20260112 в параметре context_management запроса.
Сжатие доступно в SDK для Python, TypeScript и Ruby при использовании метода tool_runner.
Сжатие — это функция SDK, которая автоматически управляет контекстом разговора, генерируя резюме, когда использование токенов становится слишком большим. В отличие от серверных стратегий редактирования контекста, которые очищают содержимое, сжатие инструктирует Claude резюмировать историю разговора, а затем заменяет полную историю этим резюме. Это позволяет Claude продолжать работу над длительными задачами, которые иначе превысили бы контекстное окно.
Когда сжатие включено, SDK отслеживает использование токенов после каждого ответа модели:
input_tokens + cache_creation_input_tokens + cache_read_input_tokens + output_tokens.<summary></summary>.Добавьте compaction_control в ваш вызов tool_runner, чтобы включить автоматическое резюмирование, когда использование токенов превышает порог.
По мере роста разговора история сообщений накапливается:
До сжатия (приближение к 100 тыс. токенов):
[
{ "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–3 тыс. токенов):
[
{
"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 продолжает работу с этого резюме, как если бы это была исходная история разговора.
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
enabled | boolean | Да | - | Включать ли автоматическое сжатие |
context_token_threshold | number | Нет | 100 000 | Количество токенов, при котором срабатывает сжатие |
model | string | Нет | Та же, что и основная модель | Модель для генерации резюме |
summary_prompt | string | Нет | См. Подсказка для резюме по умолчанию | Пользовательская подсказка для генерации резюме |
Порог определяет, когда происходит сжатие. Более низкий порог означает более частые сжатия с меньшими контекстными окнами. Более высокий порог допускает больше контекста, но повышает риск достижения лимитов.
Вы можете использовать более быструю или дешёвую модель для генерации резюме:
Вы можете предоставить пользовательскую подсказку для специфических потребностей предметной области. Ваша подсказка должна инструктировать Claude обернуть своё резюме в теги <summary></summary>.
Встроенная подсказка для резюме инструктирует Claude создать структурированное резюме для продолжения, включающее:
Эта структура позволяет Claude эффективно возобновлять работу, не теряя важный контекст и не повторяя ошибки.
Сжатие требует особого внимания при использовании серверных инструментов, таких как веб-поиск или веб-загрузка.
При использовании серверных инструментов SDK может неправильно рассчитывать использование токенов, из-за чего сжатие срабатывает в неподходящий момент.
Например, после операции веб-поиска ответ API может показать:
{
"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 видит 334 тыс. и преждевременно запускает сжатие.
Обходные решения:
Когда SDK запускает сжатие, пока ответ на использование инструмента ожидается, он удаляет блок использования инструмента из истории сообщений перед генерацией резюме. Claude повторно выполнит вызов инструмента после возобновления с резюме, если это всё ещё необходимо.
Понимание того, когда срабатывает сжатие, помогает вам настраивать пороги и проверять ожидаемое поведение.
Подходящие сценарии использования:
Менее подходящие сценарии использования:
Управляйте длинными разговорами с помощью серверного сжатия — рекомендуемой стратегии для большинства сценариев использования.
Снижайте затраты и задержку, кэшируя префиксы подсказок, и узнайте, как редактирование контекста взаимодействует с кэшем.
Was this page helpful?