Основные приёмы Prompt Engineering

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Промпт-инжиниринг включает в себя разнообразные техники и методики, направленные на оптимизацию взаимодействия с большими языковыми моделями (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.

См. также