Source: https://aiprimetech.io/ru/docs/guides/context-management/ [Главная](/ru/) / [Документация](/ru/docs/) / Управление контекстом # Управление контекстом Почему стоимость длительных сессий растёт нелинейно и какие подходы позволяют ограничивать размер истории. Копировать страницу [ Посмотреть в формате Markdown](/ru/docs/guides/context-management.md) [ Спросить ChatGPT](https://chatgpt.com/?q=Read%20https%3A//aiprimetech.io/docs/guides/context-management.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) [ Спросить в Claude](https://claude.ai/new?q=Read%20https%3A//aiprimetech.io/docs/guides/context-management.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) API не хранит состояние. На каждом шаге повторно отправляется весь диалог, поэтому число входных токенов растёт вместе с историей — и вместе с ним растёт стоимость каждого последующего вызова. ## Суть проблемы Диалог из N шагов, каждый из которых добавляет примерно T токенов, суммарно требует порядка N²T/2 входных токенов вместо NT. Удвоение длины сеанса примерно вчетверо увеличивает расходы на входные токены. Поэтому агент, который казался дешёвым в течение десяти минут, через час начинает вызывать тревогу. ## Четыре работающих подхода | Подход | Как работает | Компромисс | Скользящее окно | Сохраняйте последние K шагов, удаляйте остальные | Полностью теряет ранний контекст | Обновляемая сводка | Периодически заменяйте старые шаги кратким изложением, созданным моделью | Требует одного дополнительного вызова; сохраняет суть | Новый сеанс для каждой задачи | Начинайте с чистого листа при смене темы | Бесплатно и обычно уместно | Внешнее хранение | Храните состояние в файлах или базе данных, загружайте только то, что нужно на текущем шаге | Больше всего работы, лучший результат ## Краткое изложение предыдущих шагов ``` Copydef compact(history, keep=6): class="s">""class="s">"Replace everything but the last `keep` turns with one summary turn."class="s">"" if len(history) <= keep: return history old, recent = history[:-keep], history[-keep:] summary = summarise(old) class=class="s">"c"># one cheap Haiku call return [{class="s">"role": class="s">"user", class="s">"content": fclass="s">"Summary of earlier discussion: {summary}"}] + recent ``` Поручите создание сводки недорогой модели. Это задача сжатия, а не рассуждения. ## Обычно причина — результаты инструментов - Если инструмент возвращает 500 строк, в каждый последующий запрос попадает 500 строк. Ограничьте число строк или возвращайте сводку вместе с идентификатором для получения подробностей по запросу. - Полное содержимое файлов, прочитанных агентом, остаётся в контексте. Читайте нужный раздел, а не весь файл. - Скриншоты и изображения отправляются повторно, как и любое другое содержимое — удаляйте их после того, как они описаны. - Журналы сборки и трассировки стека: сохраняйте первые и последние 50 строк, а середину удаляйте. В агентных инструментах начало новой сессии при переходе между несвязанными задачами — самый дешёвый способ оптимизации. В Claude Code для этого используется /clear. [Контроль затратПолная картина](/ru/docs/guides/cost-control/)[Кэширование промптовКак снизить стоимость неизменной части](/ru/docs/guides/prompt-caching/)[МоделиВарианты с контекстом 1M](/ru/docs/getting-started/models/) [НазадКэширование промптов](/ru/docs/guides/prompt-caching/)[ДалееМиграция с API Anthropic](/ru/docs/guides/migration-from-anthropic/)