Основни техники на Prompt Engineering
Prompt Engineering включва разнообразни техники и методики, насочени към оптимизиране на взаимодействието с големи езикови модели (LLM) за получаване на желаните резултати. Тези техники се отнасят до структурирането на заявки, предоставянето на контекст, управлението на стила на изхода и подобряването на способността на модела за разсъждение. Тъй като LLM генерират отговор, предсказвайки следващите token-и въз основа на входния prompt, качеството и структурата на този prompt пряко влияят върху резултата. Основните техники на prompt engineering позволяват на разработчиците и потребителите ефективно да управляват поведението на модела, да намаляват грешките и да го адаптират към конкретни задачи, без да е необходимо да се променят вътрешните параметри на модела.
Базови принципи и структура на промпта
Макар конкретните реализации да варират, ефективните prompt-и често се изграждат, като се вземат предвид общи принципи и структура:
- Емпирични насоки: Като една от практическите структури (но не и отраслов стандарт) се предлага придържането към следните принципи: Дай Посока, Посочи Формат, Предостави Примери, Оцени Качеството и Раздели Задачата.
- Ефективният prompt често включва следните компоненти:
- Въведение/Роля: Задава контекста на задачата или ролята/персоната на модела.
- Инструкции: Ясни указания какво трябва да се направи.
- Контекст: Необходима информация (статична или динамично извлечена чрез RAG).
- Примери (Few-shot): Демонстрация на желания формат/стил.
- Заявка за отговор: Явно указание какво трябва да генерира моделът.
- Системно съобщение (System Prompt): В чат-интерфейсите на API (например при моделите на OpenAI, Anthropic) позволява да се зададат глобални инструкции и роля за цялата сесия.
- Форматиране: Използването на Markdown, JSON, XML или YAML помага за структурирането на prompt-а и улеснява парсирането на отговора. Разделители (```, `\"\"\"`, XML-тагове) са важни за отделянето на инструкциите от данните.
Основни техники за инструкции и примери
- Ясни и конкретни инструкции: Максимално точно описване на задачата, желания резултат и ограниченията. Избягване на двусмислието.
- Ролево моделиране (Role Prompting): Назначаване на роля на модела („Ти си експерт по...") за управление на тона, стила и базата от знания.
- Zero-shot Prompting: Заявка без примери. Ефективен за прости или добре познати на модела задачи.
- Few-Shot Prompting: Предоставяне на няколко (обикновено от 2 до 5) примера „въпрос-отговор" за демонстрация на задачата. Частен случай е One-shot Prompting с един пример. Особено полезно за сложни формати или стилове. Изисква внимание, за да се избегне смещение (anchoring) или улавяне на фалшиви паттерни от примерите.
Техники за управление на контекста
- Retrieval-Augmented Generation (RAG): Динамично добавяне на релевантна информация от външни бази от знания в prompt-а преди изпращане до LLM. Предложен за първи път от Meta AI през 2020 г., този метод е ключов за борба с халюцинациите и осигуряване на актуалност на данните.
- Чанкинг (Chunking): Разбиване на по-големи текстове на по-малки части (chunk-ове), за да се побере в контекстния прозорец на модела. Стратегиите включват разбиване по изречения, параграфи, token-и (с припокриване).
- Сумаризация: Компресиране на дълги текстове или история на диалога за предаване на основния смисъл в ограничен контекст.
Техники за подобряване на разсъжденията (Reasoning)
Тези техники са насочени към това да накарат модела да „мисли" по-внимателно и структурирано. Ефективността на много от тях, особено на CoT, се проявява при модели с голям мащаб (като правило, над 100 млрд. параметъра).
- Chain-of-Thought (CoT): Инструкция на модела да генерира поетапно разсъждение преди финалния отговор. Съществено подобрява резултатите в математиката, логиката и многоетапните задачи.
- Zero-shot CoT: Най-простата форма, която не изисква примери. Добавянето в prompt-а на фраза като „Нека разсъждаваме стъпка по стъпка" (Let's think step by step) вече може да стартира верига от разсъждения.
- Вариации на CoT:
- Auto-CoT: Автоматично генериране на примери за разсъждения за few-shot prompting.
- Self-Consistency: Генериране на няколко вериги от разсъждения и избор на най-честия отговор чрез „гласуване", което повишава надеждността.
- Tree-of-Thoughts (ToT): Изследване на няколко пътища на разсъждение под формата на дърво, с възможност за връщане назад и оценка на междинните стъпки. Тази техника демонстрира висока ефективност при сложни задачи, например повишавайки успеваемостта при решаването на „Game of 24" от ~4% до ~74%.
- Graph-of-Thought (GoT), LogiCoT и други, насочени към по-сложни или логически верифицирани разсъждения.
- ReAct (Reason and Act): Техника, развиваща CoT. Представлява итеративен цикъл, при който моделът редува стъпки на Разсъждение (Thought) и Действие с използване на Инструменти (Act), актуализирайки разбирането си въз основа на Наблюдения (Observation).
- Self-Refine: Итеративен процес, при който моделът първо генерира отговор, след това го критикува и накрая го подобрява въз основа на собствената си критика. Този цикъл „генериране-критика-подобряване" може да се повтаря няколко пъти.
- Take a Step Back Prompting: Моделът първо формулира общи принципи или абстракции, а след това ги прилага към конкретната задача.
Напреднали техники: агенти и инструменти
- Използване на инструменти (Tool Usage) / Функционално извикване (Function Calling): Предоставяне на LLM възможността да извиква външни API (търсене, калкулатор, БД). Моделът генерира структурирана заявка за извикване на инструмент, която се изпълнява от приложението, а резултатът се връща на модела. Съвременните LLM (GPT-4, Claude 3) имат вградена поддръжка на тази функция.
- Агенти (Agents): Системи на база LLM, които могат автономно да планират, да използват инструменти и да действат за постигане на цел. Често използват ReAct-подобни цикли. Фреймуърки (LangChain, AutoGen, CrewAI) улесняват тяхното създаване.
- Многоагентни системи: Взаимодействие на няколко специализирани агента за решаване на комплексни задачи.
Техники за намаляване на грешките и халюцинациите
- RAG: Обвързване на отговорите с извлечени фактически данни.
- Инструкции за ограничаване на отговора: Изискване да се отговаря само въз основа на предоставения контекст или да се посочва несигурност („Ако отговорът е неизвестен, кажи 'Не знам'").
- Заявка за цитиране: Изискване от модела да посочва източници или да цитира части от контекста, на които се основава отговорът.
- Верификация и самокритика: Използване на техники като Chain-of-Verification (CoVe) (генериране на отговор с последващата му проверка и коригиране), Self-Refine или директна заявка към модела да провери отговора си за грешки.
- CoT: Поетапното разсъждение само по себе си може да намали логическите грешки.
Техники за оценка и итерация
Макар оценката да е отделен процес, някои от нейните аспекти са част от prompt engineering:
- A/B тестване на prompt-и: Сравняване на ефективността на различни версии на prompt-и върху едни и същи задачи.
- Използване на LLM за оценка: Прилагане на мощен модел (например GPT-4) за оценка на качеството на отговорите, генерирани от друг prompt или модел (LLM-as-a-Judge).
Паттерни на prompt-и
Разпространени многократно използваеми структури:
- Паттерн на Персоната (Persona Pattern).
- Паттерн на Персонализация на Изхода (Output Customization Pattern).
- Паттерн на Заявка за Уточнения (Question Refinement Pattern).
- Паттерн на Когнитивна Верификация / Самокритика (Cognitive Verifier / Self-Critique Pattern).
- Паттерн на Поетапно Разсъждение (Step-by-Step / Chain-of-Thought Pattern).
- Паттерн на Шаблона (Template Pattern).
Литература
- Radford, A. et al. (2019). Language Models are Unsupervised Multitask Learners. PDF.
- Brown, T. B. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Li, X. L.; Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. arXiv:2101.00190.
- Liu, Y. et al. (2021). Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786.
- Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
- 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.
- Zhang, Z. et al. (2022). Automatic Chain of Thought Prompting in Large Language Models. arXiv:2210.03493.
- Zhou, D. et al. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
- Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
- Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Rafailov, R. et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
- Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
- Chen, S. Y. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
- Chang, K. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
- Genkina, D. (2024). AI Prompt Engineering Is Dead. IEEE Spectrum. [1].
- Li, Z. et al. (2024). Prompt Compression for Large Language Models: A Survey. arXiv:2410.12388.
- Liang, X. et al. (2024). Internal Consistency and Self-Feedback in Large Language Models: A Survey. arXiv:2407.14507.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
- Li, W. et al. (2025). A Survey of Automatic Prompt Engineering: An Optimization Perspective. arXiv:2502.11560.
- Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. EMNLP 2025. PDF.
- Yang, B. et al. (2025). Hallucination Detection in Large Language Models with Metamorphic Relations. arXiv:2502.15844.
Вижте също
- Големи езикови модели
- Chain-of-Thought Prompting
- Халюцинации и некоректни отговори на LLM