Prompt и контекст
Промпт и контекст являются фундаментальными понятиями в промпт-инжиниринге для больших языковых моделей (LLM).
Контекст является критически важным компонентом промпта, определяющим способность LLM генерировать точные, релевантные и полезные ответы. Эффективный промпт-инжиниринг в значительной степени заключается в искусстве сбора, фильтрации, структурирования и представления правильного контекста модели в нужный момент, преодолевая при этом ограничения современных LLM.
Определение Промпта
Промпт (англ. prompt) — это полный набор входных данных, предоставляемый LLM для генерации ответа. Это не просто вопрос или команда, а структурированный текст, который может включать в себя:
- Инструкции: Прямые указания модели о том, что нужно сделать, в каком формате, стиле или тоне.
- Основной запрос (Query): Непосредственный вопрос пользователя или описание основной задачи.
- Контекст: Дополнительная информация, необходимая для правильного выполнения запроса.
- Примеры (Few-shot examples): Демонстрация желаемого формата или стиля ответа на аналогичных задачах.
Качество и полнота промпта напрямую определяют релевантность, точность и полезность ответа LLM.
Определение Контекста
Контекст в рамках промпт-инжиниринга — это любая информация внутри промпта, которая помогает модели лучше понять задачу, специфику ситуации или ожидания пользователя, но не является частью её исходных обучающих данных. Контекст предоставляет ситуационные детали, необходимые для генерации адекватного ответа.
Контекст может включать:
- Историю предыдущего диалога (в чат-ботах).
- Данные, извлеченные из внешних источников (документы, базы данных, веб-страницы) — основа RAG.
- Информацию о пользователе (профиль, предпочтения).
- Специфические детали текущей задачи или ситуации.
- Примеры выполнения аналогичных задач (как часть few-shot prompting).
Важно отличать контекст, предоставляемый в промпте, от общих знаний, полученных моделью во время её предварительного обучения. Промпт-инжиниринг фокусируется на эффективном предоставлении именно ситуационного контекста.
Взаимосвязь и Влияние
Промпт и контекст – фундаментальные понятия при работе трансформеров, определяющие, как модель воспринимает входные данные и на основе чего генерирует результат. Архитектурно трансформер не различает специально «промпт» и «контекст» – оба являются частями входной последовательности токенов, которые преобразуются в эмбеддинги, обогащаются позиционной информацией и совокупно обрабатываются слоями самовнимания.
Промпт и контекст неразрывно связаны: контекст является составной частью промпта.
- Контекст формирует промпт: Инженер подбирает и структурирует релевантный контекст для включения в промпт.
- Контекст направляет модель: Предоставленная информация позволяет LLM сузить пространство возможных ответов, сфокусироваться на релевантных аспектах и избежать галлюцинаций.
- Качество контекста определяет качество ответа: Недостаточный, нерелевантный или противоречивый контекст приводит к неточным, общим или ошибочным ответам. Точный и полный контекст повышает специфичность и полезность генерации.
- Влияние на интерпретацию инструкций: Контекст может уточнять или изменять интерпретацию общих инструкций в промпте.
Эффективность промпта во многом зависит от того, насколько успешно инженер смог собрать, отфильтровать и представить релевантный контекст модели.
Типы Контекста
Контекст можно классифицировать по разным признакам:
По источнику:
- Предоставленный пользователем: Явный ввод пользователя, его вопрос или описание задачи.
- Из истории диалога: Предыдущие сообщения пользователя и ассистента (краткосрочная память).
- Извлеченный (Retrieved): Данные из внешних источников (документы, БД, веб) с помощью RAG.
- Из профиля/базы знаний: Долгосрочная информация о пользователе или домене.
- Статический/Инструктивный: Информация, заложенная инженером в шаблон промпта (инструкции, примеры, определения ролей).
По динамичности:
- Статический контекст: Неизменная часть промпта (инструкции, определения, примеры). Определяет общую задачу.
- Динамический контекст: Информация, изменяющаяся от запроса к запросу (данные пользователя, результаты RAG, текущее время). Предоставляет специфические детали.
По времени хранения (Память):
- Краткосрочный контекст: История текущей сессии диалога.
- Долгосрочный контекст: Сохраненные данные о пользователе или предыдущих взаимодействиях, требующие механизмов хранения и извлечения.
Управление Контекстом
Эффективное управление контекстом — ключевая задача промпт-инжиниринга, особенно в свете ограничений контекстного окна LLM. Основные методы:
- RAG: Наиболее распространенный метод для работы с большими объемами информации. Позволяет динамически находить и включать в промпт только самые релевантные фрагменты из обширной базы знаний. Требует наличия векторной базы данных и эффективных механизмов поиска (лексического или семантического).
- Чанкинг (Chunking): Разбиение больших документов на семантически связанные или фиксированного размера части для индексации и последующего извлечения через RAG.
- Суммаризация: Сжатие длинной истории диалога или объемных документов для передачи основного смысла в ограниченном контекстном окне.
- Управление Памятью (Memory Management): Использование различных стратегий для хранения и извлечения истории диалога в чат-ботах и агентах (например, ConversationBufferMemory, ConversationSummaryBufferMemory в LangChain).
- Скользящее окно (Sliding Window): Удержание только N последних сообщений диалога в контексте.
- Фильтрация и Приоритизация: Отбор наиболее релевантных фрагментов контекста на основе их важности (например, с помощью оценок релевантности, выданных при поиске) перед сборкой финального промпта.
Роль Контекста в Промпт-Инжиниринге
- Повышение Релевантности: Контекст позволяет модели генерировать ответы, точно соответствующие запросу и ситуации пользователя.
- Снижение Галлюцинаций: Предоставление фактической информации (через RAG) заставляет модель опираться на неё, а не выдумывать факты.
- Персонализация: Контекст о пользователе (предпочтения, история) позволяет адаптировать ответы.
- Управление Состоянием: В диалогах и многошаговых процессах контекст (история) обеспечивает преемственность и осведомленность модели о предыдущих шагах.
- Преодоление Ограничений Знаний Модели: RAG позволяет модели отвечать на вопросы о событиях, произошедших после её обучения, или о специфических/приватных данных.
Ограничения
- Лимит Контекстного Окна: Несмотря на увеличение до 1-2 миллионов токенов у современных моделей, обработка таких объемов может быть дорогой и медленной. Требует эффективных стратегий сжатия и отбора (RAG, суммаризация).
- Поиск Релевантного Контекста: Эффективность RAG зависит от качества поиска. Неправильно извлеченный контекст может сбить модель с толку ("мусор на входе - мусор на выходе").
- "Долина Безразличия" (Valley of Meh): Информация, расположенная в середине очень длинного промпта, может игнорироваться моделью. Требует структурирования промпта (например, "сэндвич-техника").
- Риск Контекстной Инъекции: Если контекст извлекается из ненадежных источников (например, веб-страниц), он может содержать вредоносные инструкции (промпт-инъекции).
Литература
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
- Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
- Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
- Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
- Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
- Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
- Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
См. также