— это искусство предоставления LLM именно той информации, которая необходима для выполнения следующего шага, в рамках ограниченного окна модели.
- необходимо сохранять контекст между шагами для достижения целей.
- позволяет Агенту помнить, где он находится в процессе выполнения сложной задачи.
- Мусор на входе = Мусор на выходе.
- Всегда точно знайте, что в данный момент находится в контексте.
— это краткосрочная память агента, аналогично RAM компьютера.
Контекст формируется динамически и обычно включает:
Т.е. это всё, кроме последнего промпта от пользователя.
- LLM по своей природе являются stateless, поэтому им необходимо каждый раз передавать всю историю общения с каждым сообщением.
- Трансформеры имеют квадратичную сложность: удвоение контекста увеличивает объем вычислений в четыре раза. Переполнение окна ведет к росту задержек (latency) и стоимости каждого запроса.
- Способность модели извлекать факты падает по мере роста объема данных, особенно если критичная информация скрыта в середине текста.
- Большой и неструктурированный контекст вызывает проблемы — модель отвлекается, путается в противоречивых данных или забывает изначальные инструкции.
- Без сохранения контекста между сессиями агент забывает предпочтения пользователя и предыдущие шаги, что делает невозможным выполнение многошаговых задач и персонализированного поведения.
- Тесты показывают, что чем больше объем контекста и чем больше в нем "вопросов", тем ниже точность ответов модели.
Модели имеют ограничения: данные до определенной даты, нет специфических или приватных знаний.
Способы решения этой проблемы:
(в порядке сложности и приоритета внедрения)
Передача информации напрямую в промт.
- Ограничен контекстным окном.
- Дорог при нагрузке (оплата токенов каждый раз).
Для разовых задач или небольшого количества документов.
Хранение документов в векторной базе и динамическое извлечение релевантных фрагментов для каждого запроса.
- Нужна инфраструктура (векторная база).
- Обеспечивает масштабируемость, актуальность и прозрачность.
Для больших, часто обновляемых или временных баз знаний.
Дообучение модели на частных данных для запоминания знаний или усвоения специализированного стиля.
- Дорого и долго для настройки.
- Требует переобучения при обновлении данных.
Когда нужна специфическая терминология или особый стиль при стабильных данных.
LSP (Language Server Protocol) и AST (Abstract Syntax Tree).
Низкое потребление ресурсов (CPU/RAM).
Часто перестает работать, если код содержит ошибки или не компилируется.
IDE строит полный граф кода, понимая типы, наследование и связи модулей.
Анализирует код с ошибками; поддержка переходов к определениям в библиотеках.
Высокие затраты ресурсов на индексацию; жесткая привязка к конкретной IDE.
Код переводится в векторные представления (эмбеддинги).
Стабильная работа даже со «сломанным» или неполным кодом.
Требует GPU или Cloud для эмбеддингов; точность может варьироваться.
Прямой поиск и чтение: , , и аналогичные инструменты.
Быстрый доступ к сырым данным без сложной надстройки.
Ограниченное понимание структуры кода; работа только с текстом.
Сбор контекста через тесты, линтеры и логи исполнения.
Позволяет ИИ самокорректироваться на основе реальных результатов работы.
Требует настройки проекта и инфраструктуры.
Для поддержания чистоты контекстного окна применяются базовые стратегии:
Суммаризация старых кусков разговора, удаление старых сообщений и использование отдельных сессий.
Сохранение промежуточных мыслей и важных фактов за пределами контекстного окна — в файлы, базы данных или долгосрочную память ( 🧠AI: Memory Bank ). Подтягивание в окно только тех инструкций, примеров или фактов, которые релевантны текущей задаче ( 🔨AI: Skills ).
- Проектируйте архитектуру памяти до написания промптов.
- Занимайтесь глубоким планированием до начала выполнение работы агентом.
- Если разговор уходит в сторону, начните новую сессию, передав в нее сжатое саммари предыдущей.
- Русский текст требует в 1.5–2 раза больше токенов, чем английский, так как популярные модели в основном обучены на английском корпусе.
- Универсальные промпты и инструкции работают плохо. Пишите под каждый проект, стек, пайплайн уникальный набор инструкций.
- Реализация фичей и исправление багов — это разные процессы, которые требуют разных инструкция.
- Не добавляйте в контекст ничего лишнего. Чем меньше информационного шума, тем точнее ответы модели.
- Никогда не загружайте большие документы целиком. Дайте агенту инструменты для точечного поиска (
grep), просмотра хвоста логов (tail) и чтения конкретных строк (read_file_range). - Для сложных и длинных задач заставляйте агента вести
todo.md или перезаписывать текущий план в конце каждого ответа. Это решает проблему «lost in the middle» и возвращает фокус на главную цель. - Если инструмент вернул сбой или агент ошибся, оставьте этот лог. Удаление ошибок стирает доказательства, и модель с высокой вероятностью повторит те же неверные шаги.
- Редактируйте исходный запрос вместо того, чтобы писать исправления следующим сообщением. Это экономит историю и не путает модель.
- При поиске воспоминаний не полагайтесь только на векторный поиск. Комбинируйте его со свежестью, важностью и частотой обращений.
- Настройте процессы, которые будут кластеризировать воспоминания, генерировать общие инсайты, удалять дубликаты и обновлять баллы важности в фоновом режиме во время простоя.