Контекстное окно LLM: что это и почему модель забывает

Автор: Обновлено

Что такое контекстное окно?

Контекстное окно - максимальное число токенов, которое модель обрабатывает за один запрос: инструкции, история диалога, документы, описания tools и сам ответ. Модель не помнит ничего за пределами окна: между запросами «память» создаёт приложение, повторно присылая историю.

TL;DR

  • -Окно считает вход и выход вместе: system prompt, историю, файлы, описания tools, результаты их вызовов, рассуждения модели и сам ответ.
  • -На 8 ноября 2026 у флагманов Anthropic, OpenAI, Google и DeepSeek окно около 1M токенов, лимит выхода по умолчанию от 64K до 384K.
  • -Цена зависит от длины: у Claude Haiku 5.5 промпт больше 100K токенов стоит в 5 раз дороже, у GPT-6 вход больше 272K вдвое дороже, у остальных Claude тариф единый на всё окно.
  • -При переполнении облачный API отвечает ошибкой 400, а локальный Ollama в замере автора молча обрезал вход и ответил без начала текста.
  • -В диалоге каждый ход заново отправляет и оплачивает всю историю: за 10 ходов вход вырос с 20 до 1 134 токенов.

Контекстное окно - это максимальное число токенов, которое языковая модель обрабатывает за один запрос. В него входят системные инструкции, вся история диалога, вложенные документы, описания tools и сам ответ модели. Всё, что не поместилось в окно, для модели не существует.

Окно - не обучающие данные и не долговременная память. Модель между запросами ничего не хранит: «память» в чате создаёт приложение, которое на каждом ходу заново присылает историю. Отсюда два частых сюрприза. Модель с окном в 1M токенов «забывает» начало разговора, а длинный диалог стоит дороже короткого, хотя вы задаёте такие же короткие вопросы.

Статья о том, как устроено окно, какие у него размеры на ноябрь 2026, что происходит на пределе и почему длинный контекст дорог. Числа о росте и переполнении окна - из замеров автора 8 ноября 2026 через OpenRouter и Ollama 0.40.14.

Что такое контекстное окно нейросети

Документация Anthropic называет окно «рабочей памятью» модели: это весь текст, к которому модель может обращаться при генерации ответа, включая сам ответ (Context windows). Окно измеряется в токенах, а не в словах или символах.

Токен - кусок текста: слово, часть слова или знак. На такие куски токенизатор режет вход. По документации Anthropic, 1M токенов на текущем токенизаторе Claude (введён с Opus 4.7) это примерно 555 тысяч слов или 2,5 млн символов, на прежних моделях было около 750 тысяч слов (Models overview). Русский текст того же смысла занимает больше токенов: в замерах из статьи о токенах у Claude Haiku 5.5 разница на прозе составила 1,19-1,28 раза.

Из чего складывается окно

В окно попадает всё, что есть в запросе. Последнее сообщение пользователя - лишь одна из частей. Полный список из документации Anthropic:

Что занимает окноОткуда берётсяКомментарий
System promptприложение, агент, CLAUDE.mdотправляется в каждом запросе
История messagesвсе прошлые репликирастёт с каждым ходом
Файлы, изображения, PDFвложения пользователяв одном запросе до 600 изображений или страниц PDF
Определения toolsMCP-серверы, функциисхемы инструментов тоже текст
Результаты toolsчтение файлов, поиск, логивывод инструмента попадает в окно целиком
Рассуждения (thinking)модельу Opus 4.5+, Sonnet 4.6+, Haiku 5.5 и Fable прошлые блоки по умолчанию остаются в окне
Ответ моделимодельсчитается в окно того же запроса

Prompt cache место не освобождает. Поля input_tokens, cache_read_input_tokens и cache_creation_input_tokens все считаются в окно: кэш меняет цену токенов, но не их количество.

Выход тоже занимает место

Окно делится между входом и ответом. Если вход занял 990K из 1M, на ответ осталось 10K, даже если max_tokens выставлен в 128K. Рассуждения модели входят в max_tokens и оплачиваются как выходные токены.

У Google это записано прямо в карточке модели: окно Gemini 4 Argon в 1 048 576 токенов - общий лимит на вход и выход (Gemini 4 Argon).

Размеры контекстных окон на ноябрь 2026

Снимок на 8 ноября 2026, по страницам вендоров. Цены в долларах за 1M токенов, стандартный тариф без кэша и batch.

МодельОкноМакс. выходВход / выходДлинный контекст
Claude Fable 5.11M128K$10 / $50единый тариф
Claude Opus 5.51M128K$4 / $20единый тариф
Claude Sonnet 5.51M128K$2 / $10единый тариф
Claude Haiku 5.51M128K$0,10 / $0,50промпт больше 100K: $0,50 / $2,50
GPT-6 Astra1,05M128K$10 / $50вход больше 272K: вход x2, выход x1,5
GPT-6.1 Sol1,05M128K$2 / $10то же
GPT-6.1 Terra1,05M (вход до 922K)128K$1 / $5то же
GPT-6 Luna1,05M128K$0,10 / $0,50то же
Gemini 4 Argon1 048 576 на вход и выход65 536 по умолчанию$2 / $10 до 30.11.2026, $4 / $20 с 01.12.2026отдельного тарифа нет
DeepSeek deepseek-flash1Mдо 384K$0,15 / $0,60 вне пикав пиковые часы x2
DeepSeek deepseek-v4-pro1Mдо 384K$0,66 / $1,98 вне пикав пиковые часы x2
Qwen3.8-27B (открытые веса)262 144-локальнозависит от памяти машины

Источники: цены Anthropic, модели OpenAI и карточка GPT-6.1 Terra, цены Gemini, цены DeepSeek, Qwen по гайду о локальных LLM. У DeepSeek пиковые часы 01:00-04:00 и 06:00-10:00 UTC по будням; лимит выхода в таблице вендора указан одной ячейкой на обе модели.

Сравнивать «1M» у разных вендоров напрямую нельзя: токенизаторы режут один и тот же текст на разное число токенов. По документации Anthropic, модели с Opus 4.7 и новее дают примерно на 30% больше токенов на тот же текст, чем прежние модели Claude (Token counting).

Окно в API и окно в приложении

Окно в чат-приложении может отличаться от окна в API. На платных планах Claude у Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5, Opus 5 и Sonnet 5 окно 1M, у Fable 5 и части моделей поколения 4 - 500K, у остальных 200K (справка Claude).

Для приложения ChatGPT эта статья цифр не приводит: первичный источник проверить не удалось. Окно API из таблицы на чат не переносите.

Что происходит, когда окно заканчивается

Поведение на пределе зависит от того, где работает модель: в облачном API, в локальном раннере или в приложении поверх API.

Облачный API: ошибка 400

У Anthropic правило простое. Если один только вход больше окна, API на всех моделях возвращает HTTP 400 invalid_request_error с текстом «prompt is too long». Если вход помещается, но вход плюс max_tokens больше окна, модели Claude 4.5 и новее принимают запрос, а генерация останавливается со stop_reason: "model_context_window_exceeded" (Context windows). Молча ничего не обрезается.

В замере автора облачный эндпоинт с окном 32 768 токенов (mistral-small-24b-instruct-2501 через OpenRouter) на вход около 41 080 токенов вернул HTTP 400 с точными числами:

This endpoint's maximum context length is 32768 tokens. However, you requested
about 41090 tokens (41080 of text input, 10 in the output).

Ошибка неприятна, но честна: клиент знает, что запрос не выполнен и сколько нужно срезать.

Локальный Ollama: тихое усечение

С локальным раннером в том же замере вышло иначе. В начало текста на ~4 600 токенов автор поставил кодовое слово PELICAN-47, в конец вопрос о нём, и отправил в Ollama 0.40.14 с num_ctx 2048.

Модельnum_ctxВходОтвет сервераprompt_eval_countКодовое слово
qwen3:8b2048~4 592HTTP 2001026не найдено, ответ «Note»
gemma4:e4b2048~4 400HTTP 2001027не найдено: «The text does not mention a secret code word at the very beginning.»
qwen3:8b81924 592HTTP 2004592найдено
gemma4:e4b81924 399HTTP 2004399найдено

Ошибки не было. Ollama обрезала промпт примерно до половины num_ctx, начало текста вместе с кодовым словом пропало, и модель уверенно ответила, что слова в тексте нет. Предупреждение появилось только в логе сервера:

level=WARN msg="truncating input prompt" limit=1026 prompt=4592 keep=4 new=1026

Клиент этого лога не видит. Единственный признак в самом ответе - поле prompt_eval_count: если оно заметно меньше ожидаемого размера промпта, вход обрезан. Проверить можно тем же запросом, что в замере, в форме curl:

curl -s http://localhost:11434/api/chat -d '{
  "model": "qwen3:8b",
  "stream": false,
  "think": false,
  "options": {"num_ctx": 2048, "num_predict": 20},
  "messages": [{"role": "user", "content": "<длинный текст и вопрос>"}]
}' | jq '{prompt_eval_count, answer: .message.content}'

Это важно для агентов на локальных моделях. По документации Ollama, на машинах, где GPU видит меньше 24 GiB, контекст по умолчанию 4K токенов (Context length), и длинный системный промпт агента может обрезаться без единой ошибки. Как выставить контекст и проверить его в ollama ps, описано в гайде по Ollama. Замер сделан на одной версии Ollama и двух моделях; другие локальные раннеры в замере не участвовали и могут вести себя иначе.

Чат и Claude Code: сжатие истории

Приложения поверх API обычно не показывают ошибку, а управляют окном сами. Документация Anthropic отмечает, что чат-интерфейсы вроде claude.ai могут вести окно по принципу «первым вошло, первым вышло». На платных планах Claude с включённым code execution при приближении к пределу работает автоматическое управление контекстом: Claude суммирует ранние сообщения, а полная история остаётся доступной для просмотра. Без code execution этот механизм не работает (справка Claude).

В Claude Code то же делает авто-компакция: она суммирует историю при приближении к лимиту окна (Manage costs). Управлять этим можно вручную:

  • /context показывает, что занимает окно;
  • /compact Focus on code samples and API usage сжимает историю и говорит, что сохранить; постоянные указания можно положить в раздел # Compact instructions в CLAUDE.md;
  • /clear начинает чистую сессию при переходе к несвязанной задаче.

У сжатия есть цена: /compact читает весь разговор, который суммирует, поэтому сжатие большого контекста само по себе большой запрос. /clear ничего не стоит. Подробнее о работе с сессиями в полном гайде по Claude Code.

Почему модель «забывает»

«Забывание» почти всегда объясняется одной из четырёх причин, и только последняя связана с самой моделью.

ПричинаКак выглядитЧто делать
Новый диалогмодель не знает того, что обсуждали в прошлой сессииперенести нужные факты в первое сообщение или файл; продуктовая «память» - отдельный слой без гарантий
Приложение сжало или отбросило староеобщая линия разговора сохранилась, детали из начала пропалисжимать с инструкцией, принятые решения держать в отдельном файле
Вход больше окнаAPI: ошибка 400; локальный раннер: ответ без начала текстасчитать токены заранее, сокращать вход, поднимать num_ctx
Модель видит всё, но использует хужефакт из середины длинного документа проигнорировансокращать контекст, класть важное ближе к началу или концу

Модель stateless, и всё, что выглядит как память диалога, - история, которую приложение каждый раз присылает в окне заново. Поэтому уточнение в том же диалоге работает лучше: прошлые реплики лежат в окне, а в новом диалоге их там нет.

Последняя строка таблицы описана в работе Lost in the Middle (Liu et al., 2023, TACL): модели лучше использовали информацию из начала и конца контекста и заметно хуже из середины, даже модели, рассчитанные на длинный вход. Исследование сделано на моделях 2023 года, на текущих поколениях картина может быть другой. Anthropic в документации пишет прямо: с ростом числа токенов точность и полнота извлечения падают, и называет это context rot. Отсюда практическое правило: окно - вместимость, а не гарантия, что каждый факт будет использован.

Почему длинный контекст дорогой

Длинный контекст стоит дороже по трём причинам: каждый ход оплачивает всю историю, у части моделей длинный промпт тарифицируется по повышенной ставке, а внутри модели вычисления и память растут вместе с длиной.

Каждый ход оплачивает всю историю

Модель не помнит прошлый ход, поэтому приложение на каждом шаге отправляет весь диалог целиком. Документация Claude Code формулирует это так: Claude Code отправляет полный разговор с каждым запросом (Manage costs).

Замер автора: 10 ходов короткого диалога с Claude Haiku 5.5 через OpenRouter, рассуждение выключено, max_tokens 120, на каждом ходу отправляется вся история.

ХодВходные токеныВыходные токеныОплачено всего
12091111
2127120358
3262120740
43991201 259
5535651 859
66161202 595
7754943 443
88581204 421
99941205 535
101 134956 764

Вход десятого хода в 57 раз больше первого. За 10 ходов оплачено 6 764 токена, хотя сами вопросы и ответы вместе занимают около 1 230. На этом масштабе это $0,0011 за весь диалог. Это одна модель и короткий учебный диалог, но механика общая: на агенте, который каждый ход возвращает в окно содержимое файлов и логи, та же арифметика работает с сотнями тысяч токенов.

Prompt cache удешевляет повтор неизменного начала, но не отменяет его. Чтение из кэша у Opus 5.5 и Sonnet 5.5 стоит 5% от цены входа, у Fable 5.1 2,5%, у Haiku 5.5 10% (Pricing). Место в окне кэшированные токены занимают по-прежнему.

Цена одного длинного запроса

Расчёт по прайсам на 8 ноября 2026, без кэша: вход 50K, 150K и 300K токенов плюс 2 000 токенов ответа.

Модель50K150K300K
Claude Haiku 5.5 (порог 100K)$0,006$0,080$0,155
GPT-6.1 Terra (порог 272K)$0,060$0,160$0,615
Claude Sonnet 5.5 (без порога)$0,120$0,320$0,620

Пороги работают на весь запрос, а не на токены сверх порога. У Haiku 5.5 запрос с промптом больше 100 000 токенов платит повышенную цену целиком, причём в длину промпта входят и токены из кэша. Поэтому промпт на 100 000 токенов стоит по входу $0,01, а на 100 001 около $0,05. Переход с 50K на 150K утраивает число токенов, а цену увеличивает в 13 раз.

У GPT-6.1 Terra промпт больше 272K входных токенов тарифицируется по ставке x2 на вход и кэш и x1,5 на выход «for the full request» (GPT-6.1 Terra). На 300K Terra почти догоняет Sonnet 5.5, хотя на коротком контексте вдвое дешевле. Прайсы меняются: у Gemini 4 Argon тариф удваивается 1 декабря 2026, поэтому перед своим расчётом сверьтесь с текущими ценами. Общие приёмы снижения расходов собраны в статье про оптимизацию стоимости AI.

Внимание и память

Внутри модели длинный контекст дорог по вычислениям. В классическом трансформере сложность слоя self-attention O(n²·d), где n - длина последовательности, d - размерность представления (Attention Is All You Need, таблица 1): каждый токен сравнивается со всеми остальными. Современные модели используют оптимизации вроде скользящих окон и гибридного внимания, поэтому на практике рост мягче, но бесплатным длинный контекст не становится.

Вторая статья расходов - KV-кэш, промежуточные данные внимания, которые хранятся в памяти для каждого токена контекста. Это хорошо видно на локальных моделях. По замеру в гайде о локальных LLM, у qwen3:8b KV-кэш занимает 144 KiB на токен, при контексте 32 768 это 4,5 ГиБ, и в Ollama модель заняла 9,9 ГБ при файле весов 5,2 ГБ. Длинное окно на локальной машине упирается в память раньше, чем в заявленный лимит модели.

Как держать контекст коротким

Короткий и чистый контекст дешевле и надёжнее. Приёмы ниже описаны в документации Anthropic и OpenAI; у каждого своя цена.

ПриёмКогда применятьЧем платите
RAG: класть в окно только найденные фрагментыбаза знаний больше окна или часто меняетсякачество зависит от поиска (RAG или context engineering)
Сжатие истории (compaction)длинный диалог или агентный цикл подходит к пределудетали теряются, сжатие само стоит запроса
Очистка старых tool resultsагент много читает файлов и логовprompt cache перестраивается
Внешняя памятьфакты должны пережить сессиюнужна своя логика хранения (память агентов)
Субагентыобъёмный вывод: тесты, логи, поиск по кодусубагент тратит свои токены (субагенты Claude Code)
/clear между задачамипереход к несвязанной работеконтекст прошлой задачи уходит из сессии
Отложенная загрузка tools, skills вместо длинного CLAUDE.mdмного MCP-серверов и инструкцийчасть инструкций подгружается по требованию (MCP и контекст)

На уровне API часть этих приёмов уже встроена. У Anthropic серверная compaction в beta для Claude 4.6 и новее: ранние части диалога суммируются на сервере, и разговор продолжается дальше лимита окна. Context editing очищает старые tool results и блоки рассуждений. Memory tool работает на стороне клиента: модель просит файловые операции в каталоге /memories, а ваш код их выполняет. Документация советует для долгих агентов связку: compaction держит активный контекст маленьким, memory сохраняет то, что не должно потеряться при суммаризации (Memory tool).

У OpenAI в Responses API серверная компакция включается через context_management с порогом compact_threshold, есть и отдельный stateless-эндпоинт /responses/compact; результат приходит как зашифрованный compaction item (Compaction).

В Claude Code те же идеи доступны без кода. По документации, определения MCP-инструментов загружаются отложенно, skills подгружаются только при вызове, а hook может отфильтровать лог до строк с ошибками, прежде чем Claude его прочитает (Manage costs).

Как посчитать токены до отправки

Считать токены надёжнее заранее, чем узнавать о переполнении по ошибке или обрезанному ответу.

У Anthropic для этого есть бесплатный эндпоинт /v1/messages/count_tokens. Он принимает те же model, system, messages и tools, что и основной запрос, и возвращает input_tokens. Пример по документации (Token counting):

curl -s https://api.anthropic.com/v1/messages/count_tokens \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-haiku-5-5",
    "system": "You are a code reviewer",
    "messages": [{"role": "user", "content": "<история и новый вопрос>"}]
  }'
# {"input_tokens": ...}

Документация оговаривает, что это оценка: фактическое число в основном запросе может немного отличаться. Считайте под той моделью, которую будете вызывать, потому что токенизаторы разных поколений дают разные числа.

Другие источники цифр:

  • поле usage в ответе API: у Anthropic input_tokens, cache_read_input_tokens, cache_creation_input_tokens, output_tokens, у OpenAI-совместимых API prompt_tokens и completion_tokens;
  • stop_reason в ответе Anthropic: model_context_window_exceeded значит, что ответ упёрся в окно;
  • /context и /usage в Claude Code: что занимает окно и сколько токенов ушло за сессию;
  • prompt_eval_count и eval_count в ответе Ollama: сколько токенов модель реально прочитала и сгенерировала.

Что дальше

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

Когда устройство окна понятно, следующий вопрос - что именно в него класть: какие источники, в каком порядке, как сжимать и как проверять сборку. Это разобрано в гайде по context engineering.

С чего начать:

  1. Посчитайте, сколько занимает ваш типичный запрос: count_tokens, поле usage или /context.
  2. Сверьте результат с порогами тарифов: 100K у Haiku 5.5, 272K у GPT-6.
  3. Для локальных моделей проверьте num_ctx и сравнивайте prompt_eval_count с размером промпта.
  4. Начинайте новую сессию на новую задачу, а решения держите в файле, а не в истории чата.

Первоисточники

Все страницы открыты 8 ноября 2026.

Часто задаваемые вопросы

Что такое контекстное окно простыми словами?
Это объём текста в токенах, который модель видит за один запрос. Туда входят инструкции, вся переписка, вложенные документы и ответ, который модель пишет прямо сейчас. Всё, что в окно не попало, для модели не существует.
Почему уточняющий запрос лучше отправлять в том же диалоге?
В том же диалоге контекстное окно модели сделает ответ более релевантным: приложение отправляет вместе с уточнением все прошлые реплики, и модель видит, о чём шла речь. В новом диалоге этой истории в окне нет, а сквозная память между диалогами может работать плохо или отсутствовать. Токены при этом не экономятся: история пересылается и оплачивается на каждом ходу, кэш только удешевляет повтор.
Какая нейросеть сейчас с самым большим контекстным окном?
На 8 ноября 2026 у Claude Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5, линейки GPT-6, Gemini 4 Argon и DeepSeek окно около 1M токенов; формально больше всех у GPT-6 (1,05M), но, например, у GPT-6.1 Terra вход ограничен 922K. Числа несопоставимы напрямую: у вендоров разные токенизаторы, а Google считает вход и выход вместе. Большее окно не означает лучший ответ.
Что происходит, если превысить контекстное окно?
API Anthropic на вход больше окна возвращает HTTP 400 «prompt is too long», облачный эндпоинт через OpenRouter в замере тоже ответил 400 с точными числами. Локальный Ollama в замере вернул HTTP 200, молча отрезал начало промпта и ответил без него. Чат-приложения обычно сжимают или отбрасывают старые сообщения.
Чем больше окно, тем лучше ответ?
Нет. Окно задаёт вместимость, а не качество. Документация Anthropic прямо пишет, что с ростом числа токенов точность и полнота извлечения падают, поэтому важно, что лежит в окне, а не сколько места свободно.
Сколько слов в 1 миллионе токенов?
По документации Anthropic, 1M токенов на текущем токенизаторе Claude примерно 555 тысяч английских слов или 2,5 млн символов; на токенизаторах до Opus 4.7 было около 750 тысяч слов. Русский текст того же смысла занимает больше токенов, у других вендоров соотношение своё.
Как не потерять важное в длинном диалоге?
Начинайте новую сессию на каждую задачу, а решения и договорённости держите в отдельном файле, который можно приложить заново. Перед сжатием истории говорите, что сохранить, например `/compact` с инструкцией в Claude Code. Для агентов используйте внешнюю память вместо надежды на окно.