Понимание контекстного окна

“Контекстное окно” относится к общему объему текста, который языковая модель может просматривать и на который может ссылаться при генерации нового текста, плюс новый текст, который она генерирует. Это отличается от большого корпуса данных, на котором обучалась языковая модель, и представляет собой “рабочую память” для модели. Большее контекстное окно позволяет модели понимать и отвечать на более сложные и длинные запросы, в то время как меньшее контекстное окно может ограничивать способность модели обрабатывать более длинные запросы или поддерживать связность в течение продолжительных разговоров.

Диаграмма ниже иллюстрирует стандартное поведение контекстного окна для API-запросов1:

1Для чат-интерфейсов, таких как claude.ai, контекстные окна также могут быть настроены по системе “первым пришел, первым ушел”.

  • Прогрессивное накопление токенов: По мере продвижения разговора через обмены, каждое сообщение пользователя и ответ ассистента накапливаются в контекстном окне. Предыдущие обмены сохраняются полностью.
  • Линейный рост: Использование контекста растет линейно с каждым обменом, при этом предыдущие обмены сохраняются полностью.
  • Емкость 200K токенов: Общее доступное контекстное окно (200 000 токенов) представляет собой максимальную емкость для хранения истории разговора и генерации нового вывода от Claude.
  • Поток ввода-вывода: Каждый обмен состоит из:
    • Фаза ввода: Содержит всю предыдущую историю разговора плюс текущее сообщение пользователя
    • Фаза вывода: Генерирует текстовый ответ, который становится частью будущего ввода

Контекстное окно с расширенным мышлением

При использовании расширенного мышления, все входные и выходные токены, включая токены, используемые для мышления, учитываются в пределе контекстного окна, с некоторыми нюансами в ситуациях с несколькими обменами.

Токены бюджета мышления являются подмножеством вашего параметра max_tokens, тарифицируются как выходные токены и учитываются в ограничениях скорости.

Однако предыдущие блоки мышления автоматически исключаются из расчета контекстного окна API Anthropic и не являются частью истории разговора, которую модель “видит” для последующих обменов, сохраняя емкость токенов для фактического содержания разговора.

Диаграмма ниже демонстрирует специализированное управление токенами при включенном расширенном мышлении:

  • Удаление расширенного мышления: Блоки расширенного мышления (показаны темно-серым цветом) генерируются во время фазы вывода каждого обмена, но не переносятся вперед как входные токены для последующих обменов. Вам не нужно самостоятельно удалять блоки мышления. API Anthropic автоматически делает это за вас, если вы их передаете обратно.
  • Технические детали реализации:
    • API автоматически исключает блоки мышления из предыдущих обменов, когда вы передаете их обратно как часть истории разговора.
    • Токены расширенного мышления тарифицируются как выходные токены только один раз, во время их генерации.
    • Эффективный расчет контекстного окна становится: context_window = (input_tokens - previous_thinking_tokens) + current_turn_tokens.
    • Токены мышления включают как блоки thinking, так и блоки redacted_thinking.

Эта архитектура эффективна с точки зрения токенов и позволяет проводить обширные рассуждения без потери токенов, так как блоки мышления могут быть значительными по длине.

Вы можете узнать больше о контекстном окне и расширенном мышлении в нашем руководстве по расширенному мышлению.

Контекстное окно с расширенным мышлением и использованием инструментов

Диаграмма ниже иллюстрирует управление токенами контекстного окна при сочетании расширенного мышления с использованием инструментов:

1

Архитектура первого обмена

  • Компоненты ввода: Конфигурация инструментов и сообщение пользователя
  • Компоненты вывода: Расширенное мышление + текстовый ответ + запрос на использование инструмента
  • Расчет токенов: Все компоненты ввода и вывода учитываются в контекстном окне, и все компоненты вывода тарифицируются как выходные токены.
2

Обработка результатов инструмента (обмен 2)

  • Компоненты ввода: Каждый блок из первого обмена, а также tool_result. Блок расширенного мышления должен быть возвращен с соответствующими результатами инструмента. Это единственный случай, когда вы должны возвращать блоки мышления.
  • Компоненты вывода: После того, как результаты инструмента были переданы обратно Claude, Claude ответит только текстом (без дополнительного расширенного мышления до следующего сообщения user).
  • Расчет токенов: Все компоненты ввода и вывода учитываются в контекстном окне, и все компоненты вывода тарифицируются как выходные токены.
3

Третий шаг

  • Компоненты ввода: Все входные данные и выходные данные из предыдущего обмена переносятся вперед, за исключением блока мышления, который можно отбросить теперь, когда Claude завершил весь цикл использования инструмента. API автоматически удалит блок мышления, если вы передадите его обратно, или вы можете удалить его самостоятельно на этом этапе. Здесь же вы бы добавили следующий обмен User.
  • Компоненты вывода: Поскольку есть новый обмен User вне цикла использования инструмента, Claude сгенерирует новый блок расширенного мышления и продолжит оттуда.
  • Расчет токенов: Предыдущие токены мышления автоматически исключаются из расчетов контекстного окна. Все другие предыдущие блоки по-прежнему учитываются как часть окна токенов, а блок мышления в текущем обмене Assistant учитывается как часть контекстного окна.
  • Соображения по использованию инструментов с расширенным мышлением:
    • При отправке результатов инструмента необходимо включить весь неизмененный блок мышления, сопровождающий этот конкретный запрос инструмента (включая подписанные/отредактированные части).
    • Эффективный расчет контекстного окна для расширенного мышления с использованием инструментов становится: context_window = input_tokens + current_turn_tokens.
    • Система использует криптографические подписи для проверки подлинности блоков мышления. Неспособность сохранить блоки мышления во время использования инструментов может нарушить непрерывность рассуждений Claude. Таким образом, если вы модифицируете блоки мышления, API вернет ошибку.

Модели Claude 4 поддерживают чередующееся мышление, которое позволяет Claude думать между вызовами инструментов и делать более сложные рассуждения после получения результатов инструментов.

Claude Sonnet 3.7 не поддерживает чередующееся мышление, поэтому нет чередования расширенного мышления и вызовов инструментов без обмена пользователя не-tool_result между ними.

Для получения дополнительной информации об использовании инструментов с расширенным мышлением см. наше руководство по расширенному мышлению.

Управление контекстным окном с более новыми моделями Claude

В более новых моделях Claude (начиная с Claude Sonnet 3.7), если сумма токенов запроса и токенов вывода превышает контекстное окно модели, система вернет ошибку валидации, а не будет молча обрезать контекст. Это изменение обеспечивает более предсказуемое поведение, но требует более тщательного управления токенами.

Чтобы планировать использование токенов и гарантировать, что вы остаетесь в пределах контекстного окна, вы можете использовать API подсчета токенов для оценки того, сколько токенов будут использовать ваши сообщения, прежде чем отправлять их Claude.

См. нашу таблицу сравнения моделей для списка размеров контекстных окон по моделям.

Следующие шаги