Контекстное окно и prompting: что модель видит в запросе
Контекстное окно — последовательность токенов, доступная модели в текущем вызове. В неё могут входить системные инструкции, история диалога, документы, результаты инструментов и…
Краткий ответ
Контекстное окно — последовательность токенов, доступная модели в текущем вызове. В неё могут входить системные инструкции, история диалога, документы, результаты инструментов и место для генерируемого ответа.
Контекстное окно — последовательность токенов, доступная модели в текущем вызове. В неё могут входить системные инструкции, история диалога, документы, результаты инструментов и место для генерируемого ответа. Контекст влияет на вычисление, но сам по себе не переписывает веса модели.
Из чего складывается контекст
Чат-интерфейс визуально разделяет сообщения по ролям, однако перед моделью они кодируются в одну последовательность по шаблону конкретной системы. Служебные маркеры сообщают роли, границы и формат. Порядок сообщений важен: одинаковые фразы в системной инструкции, пользовательском запросе и цитируемом документе имеют разный ожидаемый приоритет, если модель и оркестратор обучены его соблюдать.
Лимит делится между входом и выходом. Если запрос занял почти всё окно, сервису придётся обрезать историю, сократить документы или оставить меньше места для ответа. Точный способ обрезки — свойство приложения, не универсальная способность модели.
In-context learning без изменения весов
Примеры в промпте могут задать формат или локальное правило. Модель распознаёт шаблон внутри текущего forward pass — это называют in-context learning. После завершения вызова параметры не изменяются. Новый диалог не обязан помнить пример, если приложение не передало его снова или не сохранило во внешней памяти.
Few-shot prompting особенно полезен, когда словами трудно точно описать формат. Но примеры должны покрывать границы: только «идеальные» случаи способны научить нежелательной эвристике. Также порядок примеров иногда влияет на результат, поэтому его нужно включать в тесты.
Длиннее не всегда лучше
Добавление релевантного контекста обычно помогает, но лишний текст конкурирует за внимание и повышает стоимость. Исследование Lost in the Middle показало, что качество ряда моделей падало, когда нужная информация находилась в середине длинного контекста, хотя формально помещалась в окно.
Это не универсальный закон для всех моделей и задач, но важное предупреждение: «поместилось» не означает «надёжно использовано». Структура, позиция, заголовки, повтор ключевого ограничения и качество retrieval могут быть важнее сырой длины.
Хороший промпт как контракт
Полезный запрос описывает цель, входные данные, ограничения, критерий готовности и формат ответа. Нужно отделять инструкции от недоверенных данных. Фраза из загруженного документа может выглядеть как команда; приложение не должно автоматически давать ей тот же уровень полномочий, что системной политике.
Промпт не заменяет программную валидацию. Если требуется JSON, результат проверяют схемой. Если запрещено выполнять действие без подтверждения, оркестратор должен обеспечить это кодом, а не надеждой на текстовую просьбу.
Упражнение: бюджет контекста
Спроектируйте запрос для анализа трёх документов. Разделите бюджет в 8 000 токенов на системную инструкцию, вопрос, фрагменты документов, историю и ответ. Оставьте запас на служебные токены.
Затем представьте, что найдено 30 фрагментов. Сравните три стратегии: отправить всё, выбрать пять по релевантности, сначала сделать иерархическое резюме. Запишите риск каждой стратегии: шум, потеря важного фрагмента, искажение при сжатии.
Частые вопросы
Контекстное окно — это память модели?
Это рабочий вход текущего вычисления. Долговременное знание в параметрах и внешняя память приложения — другие механизмы.
Если документ помещается целиком, retrieval не нужен?
Не всегда. Целиком переданный документ может быть дорогим и плохо использоваться из-за шума или позиции факта. Но retrieval тоже ошибается, поэтому выбор нужно проверять на задаче.
Можно ли промптом гарантировать безопасность?
Нет. Промпт является одним уровнем управления. Разрешения, валидация аргументов, изоляция данных, подтверждения и журналирование должны обеспечиваться приложением.
Что важно запомнить
- Контекст включает все переданные модели токены и делит лимит с будущим ответом.
- In-context learning меняет поведение текущего вызова, но не веса.
- Длинное окно не гарантирует равномерного использования информации.
- Промпт задаёт контракт, а критические ограничения дополнительно обеспечиваются кодом.
https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-06