Основные приёмы Prompt Engineering
Промпт-инжиниринг включает в себя разнообразные техники и методики, направленные на оптимизацию взаимодействия с большими языковыми моделями (LLM) для получения желаемых результатов. Эти приёмы касаются структурирования запросов, предоставления контекста, управления стилем вывода и улучшения способности модели к рассуждению. Поскольку LLM генерируют ответ, предсказывая следующие токены на основе входного промпта, качество и структура этого промпта напрямую влияют на результат. Основные приёмы промпт-инжиниринга позволяют разработчикам и пользователям эффективно управлять поведением модели, снижать ошибки и адаптировать её к конкретным задачам без необходимости изменения внутренних параметров модели.
Базовые принципы и структура промпта
Хотя конкретные реализации варьируются, эффективные промпты часто строятся с учетом общих принципов и структуры:
- Эмпирические ориентиры: В качестве одной из практических структур (но не отраслевого стандарта) предлагается придерживаться следующих принципов: Дать Направление, Указать Формат, Предоставить Примеры, Оценить Качество и Разделить Задачу.
- Эффективный промпт часто включает следующие компоненты:
- Введение/Роль: Задает контекст задачи или роль/персону модели.
- Инструкции: Четкие указания, что нужно сделать.
- Контекст: Необходимая информация (статическая или динамически извлеченная через RAG).
- Примеры (Few-shot): Демонстрация желаемого формата/стиля.
- Запрос ответа: Явное указание, что модель должна сгенерировать.
- Системное сообщение (System Prompt): В чат-интерфейсах API (например, у моделей OpenAI, Anthropic) позволяет задать глобальные инструкции и роль для всей сессии.
- Форматирование: Использование Markdown, JSON, XML или YAML помогает структурировать промпт и облегчает парсинг ответа. Разделители (```, `"""`, XML-теги) важны для отделения инструкций от данных.
Основные техники инструкций и примеров
- Четкие и конкретные инструкции: Максимально точно описать задачу, желаемый результат и ограничения. Избегать двусмысленности.
- Ролевое моделирование (Role Prompting): Назначение модели роли ("Ты - эксперт по...") для управления тоном, стилем и базой знаний.
- Zero-shot Prompting: Запрос без примеров. Эффективен для простых или хорошо знакомых модели задач.
- Few-Shot Prompting: Предоставление нескольких (обычно от 2 до 5) примеров "вопрос-ответ" для демонстрации задачи. Частным случаем является One-shot Prompting с одним примером. Особенно полезно для сложных форматов или стилей. Требует осторожности, чтобы избежать смещения (anchoring) или улавливания ложных паттернов из примеров.
Техники управления контекстом
- Retrieval-Augmented Generation (RAG): Динамическое добавление релевантной информации из внешних баз знаний в промпт перед отправкой LLM. Впервые предложенный Meta AI в 2020 году, этот метод является ключевым для борьбы с галлюцинациями и обеспечения актуальности данных.
- Чанкинг (Chunking): Разбиение больших текстов на меньшие части (чанки), чтобы уложиться в контекстное окно модели. Стратегии включают разбиение по предложениям, параграфам, токенам (с перекрытием).
- Суммаризация: Сжатие длинных текстов или истории диалога для передачи основного смысла в ограниченном контексте.
Техники улучшения рассуждений (Reasoning)
Эти техники направлены на то, чтобы заставить модель "думать" более тщательно и структурированно. Эффективность многих из них, особенно CoT, проявляется на моделях большого масштаба (как правило, более 100 млрд параметров).
- Chain-of-Thought (CoT): Инструкция модели генерировать пошаговое рассуждение перед финальным ответом. Существенно улучшает результаты в математике, логике и многоэтапных задачах.
- Zero-shot CoT: Простейшая форма, не требующая примеров. Добавление в промпт фразы вроде «Давай рассуждать по шагам» (Let's think step by step) уже способно запустить цепочку рассуждений.
- Вариации CoT:
- Auto-CoT: Автоматическая генерация примеров рассуждений для few-shot промптинга.
- 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: Пошаговое рассуждение само по себе может снизить логические ошибки.
Техники оценки и итерации
Хотя оценка — это отдельный процесс, некоторые её аспекты являются частью промпт-инжиниринга:
- A/B Тестирование промптов: Сравнение эффективности разных версий промптов на одних и тех же задачах.
- Использование LLM для оценки: Применение мощной модели (например, GPT-4) для оценки качества ответов, сгенерированных другим промптом или моделью (LLM-as-a-Judge).
Паттерны промптов
Распространенные переиспользуемые структуры:
- Паттерн Персоны (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.
См. также