Окна контекста
Понимание окна контекста
“Окно контекста” относится к общему объему текста, который языковая модель может использовать для справки при генерации нового текста, плюс сам генерируемый текст. Это отличается от большого корпуса данных, на котором была обучена языковая модель, и представляет собой “рабочую память” модели. Большее окно контекста позволяет модели понимать и отвечать на более сложные и длинные запросы, в то время как меньшее окно контекста может ограничивать способность модели обрабатывать длинные запросы или поддерживать согласованность в течение длительных разговоров.
Диаграмма ниже иллюстрирует стандартное поведение окна контекста для 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
.
Эта архитектура эффективна с точки зрения токенов и позволяет проводить обширные рассуждения без траты токенов, так как блоки мышления могут быть значительными по длине.
Вы можете узнать больше об окне контекста и расширенном мышлении в нашем руководстве по расширенному мышлению.
Окно контекста с расширенным мышлением и использованием инструментов
Диаграмма ниже иллюстрирует управление токенами окна контекста при комбинировании расширенного мышления с использованием инструментов:
Архитектура первой реплики
- Компоненты ввода: Конфигурация инструментов и сообщение пользователя
- Компоненты вывода: Расширенное мышление + текстовый ответ + запрос на использование инструмента
- Подсчет токенов: Все компоненты ввода и вывода учитываются в окне контекста, и все компоненты вывода тарифицируются как выходные токены.
Обработка результата инструмента (реплика 2)
- Компоненты ввода: Каждый блок в первой реплике, а также
tool_result
. Блок расширенного мышления должен быть возвращен с соответствующими результатами инструмента. Это единственный случай, когда вы должны возвращать блоки мышления. - Компоненты вывода: После того как результаты инструмента были переданы обратно Claude, Claude ответит только текстом (без дополнительного расширенного мышления до следующего сообщения
user
). - Подсчет токенов: Все компоненты ввода и вывода учитываются в окне контекста, и все компоненты вывода тарифицируются как выходные токены.
Третий шаг
- Компоненты ввода: Все входные данные и вывод из предыдущей реплики переносятся вперед, за исключением блока мышления, который можно отбросить теперь, когда Claude завершил весь цикл использования инструмента. API автоматически удалит блок мышления, если вы передадите его обратно, или вы можете удалить его самостоятельно на этом этапе. Здесь также добавляется следующая реплика
User
. - Компоненты вывода: Поскольку есть новая реплика
User
вне цикла использования инструмента, Claude сгенерирует новый блок расширенного мышления и продолжит оттуда. - Подсчет токенов: Предыдущие токены мышления автоматически исключаются из расчетов окна контекста. Все остальные предыдущие блоки по-прежнему учитываются как часть окна токенов, а блок мышления в текущей реплике
Assistant
учитывается как часть окна контекста.
- Особенности использования инструментов с расширенным мышлением:
- При отправке результатов инструмента необходимо включить весь неизмененный блок мышления, сопровождающий этот конкретный запрос инструмента (включая подписанные/отредактированные части).
- Система использует криптографические подписи для проверки подлинности блоков мышления. Если не сохранять блоки мышления при использовании инструментов, это может нарушить непрерывность рассуждений Claude. Таким образом, если вы модифицируете блоки мышления, API вернет ошибку.
Нет чередования расширенного мышления и вызовов инструментов - вы не увидите расширенное мышление, затем вызовы инструментов, затем снова расширенное мышление без реплики пользователя не-tool_result
между ними. Кроме того, использование инструментов внутри самого блока расширенного мышления в настоящее время не поддерживается, хотя Claude может рассуждать о том, какие инструменты следует использовать и как их вызывать внутри блока мышления.
Вы можете узнать больше об использовании инструментов с расширенным мышлением в нашем руководстве по расширенному мышлению
Управление окном контекста в новых моделях Claude
В более новых моделях Claude (начиная с Claude 3.7 Sonnet), если сумма токенов запроса и токенов вывода превышает окно контекста модели, система вернет ошибку валидации вместо того, чтобы молча обрезать контекст. Это изменение обеспечивает более предсказуемое поведение, но требует более тщательного управления токенами.
Чтобы планировать использование токенов и убедиться, что вы остаетесь в пределах окна контекста, вы можете использовать API подсчета токенов для оценки количества токенов, которые будут использовать ваши сообщения, прежде чем отправлять их Claude.
См. нашу таблицу сравнения моделей для списка размеров окон контекста по моделям.
Следующие шаги
Таблица сравнения моделей
Посмотрите нашу таблицу сравнения моделей для списка размеров окон контекста и цен на входные / выходные токены по моделям.
Обзор расширенного мышления
Узнайте больше о том, как работает расширенное мышление и как реализовать его вместе с другими функциями, такими как использование инструментов и кэширование промптов.
Was this page helpful?