Prompt и контекст
Prompt и контекст са фундаментални понятия в prompt инженерството за големи езикови модели (LLM).
Контекстът е критично важен компонент на prompt-а, определящ способността на LLM да генерира точни, релевантни и полезни отговори. Ефективното prompt инженерство в значителна степен се свежда до изкуството за събиране, филтриране, структуриране и представяне на правилния контекст на модела в подходящия момент, преодолявайки при това ограниченията на съвременните LLM.
Определение на Prompt
Prompt (англ. prompt) — това е пълният набор от входни данни, предоставян на LLM за генериране на отговор. Той не е просто въпрос или команда, а структуриран текст, който може да включва:
- Инструкции: Преки указания към модела какво трябва да направи, в какъв формат, стил или тон.
- Основна заявка (Query): Непосредственият въпрос на потребителя или описанието на основната задача.
- Контекст: Допълнителна информация, необходима за правилното изпълнение на заявката.
- Примери (Few-shot examples): Демонстрация на желания формат или стил на отговор върху аналогични задачи.
Качеството и пълнотата на prompt-а пряко определят релевантността, точността и полезността на отговора на LLM.
Определение на Контекст
Контекстът в рамките на prompt инженерството е всяка информация вътре в prompt-а, която помага на модела да разбере по-добре задачата, спецификата на ситуацията или очакванията на потребителя, но не е част от нейните изходни обучителни данни. Контекстът предоставя ситуационни детайли, необходими за генериране на адекватен отговор.
Контекстът може да включва:
- История на предишния диалог (в чат-ботове).
- Данни, извлечени от външни източници (документи, бази данни, уеб страници) — основата на RAG.
- Информация за потребителя (профил, предпочитания).
- Специфични детайли на текущата задача или ситуация.
- Примери за изпълнение на аналогични задачи (като част от few-shot prompting).
Важно е да се разграничава контекстът, предоставян в prompt-а, от общите знания, придобити от модела по време на предварителното му обучение. Prompt инженерството се фокусира върху ефективното предоставяне именно на ситуационен контекст.
Взаимовръзка и Влияние
Prompt и контекст са фундаментални понятия при работата на transformer-ите, определящи как моделът възприема входните данни и на база на какво генерира резултата. Архитектурно transformer-ът не прави специално разграничение между „prompt" и „контекст" — и двете са части от входната последователност от token-и, които се преобразуват в embedding-и, обогатяват се с позиционна информация и съвкупно се обработват от слоевете на самовниманието.
Prompt-ът и контекстът са неразривно свързани: контекстът е съставна част от prompt-а.
- Контекстът формира prompt-а: Инженерът подбира и структурира релевантния контекст за включване в prompt-а.
- Контекстът насочва модела: Предоставената информация позволява на LLM да стесни пространството от възможни отговори, да се съсредоточи върху релевантните аспекти и да избегне халюцинации.
- Качеството на контекста определя качеството на отговора: Недостатъчен, нерелевантен или противоречив контекст води до неточни, общи или грешни отговори. Точният и пълен контекст повишава специфичността и полезността на генерацията.
- Влияние върху интерпретацията на инструкциите: Контекстът може да уточнява или да променя интерпретацията на общите инструкции в prompt-а.
Ефективността на prompt-а до голяма степен зависи от това колко успешно инженерът е успял да събере, филтрира и представи релевантния контекст на модела.
Видове Контекст
Контекстът може да бъде класифициран по различни признаци:
По източник:
- Предоставен от потребителя: Явен вход от потребителя, неговият въпрос или описание на задачата.
- От историята на диалога: Предишни съобщения на потребителя и асистента (краткосрочна памет).
- Извлечен (Retrieved): Данни от външни източници (документи, БД, уеб) с помощта на RAG.
- От профил/база знания: Дългосрочна информация за потребителя или домейна.
- Статичен/Инструктивен: Информация, заложена от инженера в шаблона на prompt-а (инструкции, примери, дефиниции на роли).
По динамичност:
- Статичен контекст: Непроменяща се част от prompt-а (инструкции, определения, примери). Определя общата задача.
- Динамичен контекст: Информация, променяща се от заявка към заявка (данни на потребителя, резултати от RAG, текущо време). Предоставя специфични детайли.
По време на съхранение (Памет):
- Краткосрочен контекст: История на текущата сесия на диалога.
- Дългосрочен контекст: Запазени данни за потребителя или предишни взаимодействия, изискващи механизми за съхранение и извличане.
Управление на Контекста
Ефективното управление на контекста е ключова задача в prompt инженерството, особено с оглед на ограниченията на контекстния прозорец на LLM. Основни методи:
- RAG: Най-разпространеният метод за работа с големи обеми информация. Позволява динамично намиране и включване в prompt-а само на най-релевантните фрагменти от обширна база знания. Изисква наличие на векторна база данни и ефективни механизми за търсене (лексикално или семантично).
- Чанкинг (Chunking): Разбиване на големи документи на семантично свързани или с фиксиран размер части за индексиране и последващо извличане чрез RAG.
- Суммаризация: Компресиране на дълга история на диалог или обемни документи за предаване на основния смисъл в ограничен контекстен прозорец.
- Управление на Паметта (Memory Management): Използване на различни стратегии за съхранение и извличане на историята на диалога в чат-ботове и агенти (например ConversationBufferMemory, ConversationSummaryBufferMemory в LangChain).
- Плъзгащ прозорец (Sliding Window): Задържане само на последните N съобщения от диалога в контекста.
- Филтриране и Приоритизиране: Подбор на най-релевантните фрагменти от контекста въз основа на тяхната важност (например с помощта на оценки за релевантност, получени при търсенето) преди съставянето на финалния prompt.
Роля на Контекста в Prompt Инженерството
- Повишаване на Релевантността: Контекстът позволява на модела да генерира отговори, точно съответстващи на заявката и ситуацията на потребителя.
- Намаляване на Халюцинациите: Предоставянето на фактическа информация (чрез RAG) кара модела да се опира на нея, а не да измисля факти.
- Персонализация: Контекстът за потребителя (предпочитания, история) позволява адаптиране на отговорите.
- Управление на Състоянието: В диалози и многостъпкови процеси контекстът (историята) осигурява приемственост и информираност на модела за предишните стъпки.
- Преодоляване на Ограниченията на Знанията на Модела: RAG позволява на модела да отговаря на въпроси за събития, случили се след неговото обучение, или за специфични/частни данни.
Ограничения
- Лимит на Контекстния Прозорец: Въпреки увеличението до 1-2 милиона token-и при съвременните модели, обработката на такива обеми може да бъде скъпа и бавна. Изисква ефективни стратегии за компресиране и подбор (RAG, суммаризация).
- Търсене на Релевантен Контекст: Ефективността на RAG зависи от качеството на търсенето. Неправилно извлеченият контекст може да обърка модела („боклук на входа — боклук на изхода").
- „Долина на Безразличието" (Valley of Meh): Информацията, намираща се в средата на много дълъг prompt, може да бъде игнорирана от модела. Изисква структуриране на prompt-а (например „сандвич техника").
- Риск от Контекстна Инжекция: Ако контекстът се извлича от ненадеждни източници (например уеб страници), той може да съдържа злонамерени инструкции (prompt инжекции).
Литература
- 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.
Вижте също
- Големи езикови модели
- Контекстен прозорец
- Векторни бази данни
- LangChain