Гугл выпустили простую и понятную инструкцию, как настраивать модель, как создавать промпты, что влияет на результат, и небольшие лайфхаки. Оригинал.
Дальше будет небольшая выжимка и перевод с помощью ChatGPT.
Промпт-инжиниринг — это навык создания эффективных входных данных (запросов), чтобы направлять эти мощные модели ИИ к генерации конкретных, точных и полезных результатов, которые вам нужны.
Что такое Промпт-инжиниринг?
Большая Языковая Модель(БЯМ) работает, предсказывая наиболее вероятную последовательность слов (или «токенов»), следующую за вашим вводом. Когда вы пишете запрос, вы, по сути, задаете начальную точку и направление для этого процесса предсказания. Промпт-инжиниринг включает в себя:
Создание четких инструкций: Точное указание ИИ, что вы хотите от него получить.
Предоставление контекста: Передача ИИ необходимой фоновой информации.
Структурирование ввода: Форматирование вашего запроса таким образом, чтобы ИИ лучше его понял.
Итерация и уточнение: Экспериментирование с вашими запросами на основе ответов ИИ до тех пор, пока вы не достигнете желаемого результата.
С чего начать. Базовые техники составления запросов
Запрос «без примеров» (Zero‑Shot Prompting): Это самый простой метод. Вы просто даете БЯМ описание задачи или вопрос без каких‑либо примеров.
Пример: «Сделай краткое изложение основных моментов статьи выше.»
Запрос «с одним примером» (One‑Shot) и «с несколькими примерами» (Few‑Shot Prompting): Этот метод часто значительно эффективнее, особенно для специфических форматов или стилей. Вы предоставляете БЯМ один (one‑shot) или несколько (few‑shot) примеров типа ввода и желаемого вывода, которые вы ожидаете.
Почему это работает: Примеры действуют как мини‑обучение, четко демонстрируя ваши ожидания относительно структуры, тона или содержания.
Совет: Для few‑shot стремитесь предоставить 3–5 разнообразных, высококачественных примеров, релевантных вашей задаче. Включите крайние случаи (edge cases), если необходимо.
Создание сцены. Предоставление ИИ контекста и личности/роли
Помимо базовых инструкций, вы можете более глубоко управлять поведением ИИ:
Системный запрос (System Prompting): Определяет общую цель или ограничения для ИИ вовремя взаимодействия. Он задает «общую картину».
Пример: «Ты — продакт менеджер, который переводит технический жаргон на простой язык.»
Контекстный запрос (Contextual Prompting): Предоставляет конкретную фоновую информацию, релевантную текущей задаче или разговору. Это помогает ИИ понять нюансы.
Пример: «Основываясь на отзыве клиента, предоставленном ранее, определи основную жалобу.»
Ролевой запрос (Role Prompting): Назначает ИИ конкретную персону или персонажа для подражания, влияя на его тон, стиль и фокус знаний.
Пример: «Отвечай как остроумный, саркастичный пират.» или «Объясни эту концепцию как терпеливый учитель физики в старшей школе.»
Углубляемся: Продвинутые стратегии промптинга
Запрос «Цепочка рассуждений» (Chain of Thought, CoT): Этот метод побуждает БЯМ «думать пошагово». Вместо того чтобы просто давать окончательный ответ, вы просите ее сначала изложить свой процесс рассуждения. Это значительно улучшает производительность при решении задач, требующих логики, математики или многоэтапного решения проблем.
Преимущество: Делает рассуждения ИИ прозрачными и помогает отлаживать ошибки.
Как: Просто добавьте фразы вроде «Давай подумаем шаг за шагом» или предоставьте few‑shot примеры, включающие шаги рассуждения.
Запрос «с шагом назад» (Step‑Back Prompting): Прежде чем браться за конкретный, сложный вопрос, вы просите БЯМ сначала рассмотреть более общий, основополагающий принцип или концепцию. Это активирует более широкие знания и может привести к более глубоким ответам на конкретную задачу.
Самосогласованность (Self‑Consistency): Улучшение CoT. Вы запускаете один и тот же запрос несколько раз с настройками, поощряющими разнообразные выводы (более высокая «температура», объяснение ниже). Затем вы рассматриваете различные пути рассуждений и итоговые ответы и выбираете наиболее частый (согласованный). Это повышает надежность.
Дерево мыслей (Tree of Thoughts, ToT): Обобщает концепцию CoT, позволяя БЯМ исследовать несколько различных путей рассуждений одновременно, подобно ветвям дерева, оценивая разные варианты по ходу дела. Это мощный инструмент для сложных задач, требующих исследования, но более сложен в реализации.
ReAct (Reason and Act — Рассуждай и действуй): Эта революционная техника позволяет БЯМ решать сложные задачи, используя рассуждения на естественном языке в сочетании с внешними инструментами (такими как поисковая система или калькулятор) для сбора информации или выполнения действий. БЯМ рассуждает о том, что ей нужно сделать, формулирует действие (например, «Найти участников группы Metallica»), выполняет его с помощью инструмента, наблюдает за результатом, а затем продолжает рассуждения. Это ключевой шаг к созданию автономных ИИ‑агентов.
Настройка двигателя. Ключевые параметры конфигурации
Помимо текста вашего запроса, вы часто можете настроить, как ИИ генерирует свой ответ:
Длина вывода (Максимум токенов): Контролирует максимальную длину ответа.
Соображения: Более длинные выводы требуют больше времени, стоят дороже и потребляют больше энергии. Установка лимита не делает ИИ более лаконичным; она просто обрезает ответ. Возможно, вам потребуется скорректировать и запрос, и лимит длины для коротких ответов. Остерегайтесь обрезания важной информации, особенно при использовании структурированных форматов, таких как JSON.
Управление сэмплированием (Температура, Top‑K, Top‑P): Эти настройки контролируют случайность и креативность вывода ИИ. БЯМ предсказывают вероятности для следующего слова; эти настройки определяют, как ИИ выбирает из этих вероятностей.
Температура (Temperature): Контролирует случайность. Низкая температура (например, 0.1–0.3) делает вывод более сфокусированным, детерминированным и предсказуемым (хорошо для фактических ответов). Высокая температура (например, 0.7–1.0) увеличивает случайность, приводя к более разнообразным, креативным или неожиданным результатам (хорошо для мозгового штурма, творческого письма). Температура 0 означает, что ИИ всегда выбирает единственное наиболее вероятное следующее слово.
Top‑K: Рассматривает только 'K' наиболее вероятных слов для следующего шага. Низкий K (например, 1) детерминирован; высокий K допускает больше возможностей.
Top‑P (Ядерное сэмплирование): Выбирает из наименьшего набора слов, чья кумулятивная вероятность превышает порог 'P'. Низкий P более сфокусирован; P=1 рассматривает все возможности.
Взаимодействие: Эти настройки взаимодействуют. Экстремальные значения одной могут переопределить другие (например, Temp=0 делает Top‑K/P нерелевантными).
Начальные точки: Для связного, но потенциально креативного вывода попробуйте Temp=0.2, Top‑P=0.95, Top‑K=30. Для высокой креативности попробуйте Temp=0.9, Top‑P=0.99, Top‑K=40. Для фактических задач начните с Temp=0.
Предупреждение: Неправильные настройки (особенно очень низкие или очень высокие температуры) иногда могут вызвать «ошибку цикла повторений», когда ИИ застревает, повторяя одно и то же слово или фразу. Поиск правильного баланса часто требует экспериментов.
Становимся профессионалами. Лучшие практики для эффективного промптинга
Освоение промпт‑инжиниринга — это итеративный процесс. Вот ключевые лучшие практики, которые помогут вам:
Предоставляйте примеры (Few‑Shot — король): Это часто самая эффективная техника. Четкие примеры показывают ИИ точно, какой тип вывода вы хотите с точки зрения формата, стиля, тона и содержания.
Проектируйте с простотой и ясностью: Пишите запросы, которые легко понять. Избегайте двусмысленности, сложного языка и ненужной информации. Используйте четкие глаголы действия (например, Суммируй, Классифицируй, Извлеки, Сгенерируй, Сравни). Если это сбивает с толку вас, скорее всего, это сбивает с толку и ИИ.
Будьте конкретны в отношении желаемого вывода: Не будьте расплывчаты. Укажите желаемую длину, формат (абзац, списки, JSON), тон и любые ключевые элементы, которые должны быть включены или исключены.
Используйте инструкции вместо ограничений: Говорите ИИ, что делать, а не просто перечисляйте, чего не делать. Позитивные инструкции («Пиши в формальном тоне») обычно более эффективны и менее подвержены неправильному толкованию, чем негативные ограничения («Не используй сленг»). Используйте ограничения в основном для безопасности или обязательных правил форматирования.
Контролируйте длину вывода: Используйте настройку «Максимум токенов» и указывайте желаемую длину в вашем запросе (например, «Напиши краткое изложение в 50 словах»), чтобы управлять размером ответа и стоимостью.
Используйте переменные для повторного использования: В приложениях заменяйте жестко закодированные детали в ваших запросах переменными (например, {{название_города}} вместо «Лондон»). Это делает запросы динамичными и упрощает их повторное использование.
Экспериментируйте и итерируйте: Не ожидайте, что первый запрос будет идеальным. Пробуйте разные формулировки, структуры (вопрос vs. утверждение vs. инструкция), техники (zero‑shot vs. few‑shot) и настройки конфигурации (Температура, Top‑K/P). Смотрите, что лучше всего работает для вашей конкретной задачи и модели.
Смешивайте классы в примерах Few‑Shot: При выполнении задач классификации убедитесь, что ваши few‑shot примеры охватывают разные категории в смешанном порядке, чтобы предотвратить случайное обучение ИИ предвзятости на основе последовательности.
Адаптируйтесь к обновлениям модели: БЯМ постоянно развиваются. Следите за новыми версиями и возможностями. Тестируйте свои запросы с новыми моделями и корректируйте их, чтобы использовать улучшения.
Экспериментируйте с форматами вывода (Попробуйте JSON!): Для задач, связанных с извлечением данных, классификацией или структурированной информацией, запрос ИИ на возврат вывода в формате JSON может быть очень полезен.
Преимущества: Обеспечивает структуру, уменьшает галлюцинации (заставляет ИИ придерживаться запрошенных полей), предоставляет типы данных, позволяет сортировать и легко используется в приложениях.
Предупреждение: JSON многословен и использует больше токенов. Иногда генерация может оборваться, что приведет к невалидному JSON. Существуют инструменты (например, библиотека Python json‑repair) для исправления некорректного JSON.
Рассмотрите структурированный ввод (JSON Schema): Так же, как JSON хорош для вывода, предоставление входных данных, структурированных с помощью JSON Schema, может помочь ИИ понять структуру данных, типы и взаимосвязи, что приведет к более сфокусированной и точной обработке, особенно при работе со сложными данными.
Запросы в действии. За пределами текста
Промпт‑инжиниринг не ограничивается генерацией прозы. Как отмечается в документе, он очень эффективен для таких задач, как:
Написание кода: Генерация фрагментов кода на различных языках на основе описаний.
Объяснение кода: Понимание и документирование существующего кода.
Перевод кода: Преобразование кода с одного языка программирования на другой.
Отладка кода: Выявление и предложение исправлений ошибок.