Menu

Промпт инжиниринг: что это и как ему научиться

Промпт-инжиниринг: это практика написания и проверки инструкций для ИИ-модели, чтобы она выдавала нужный результат. Разбираем, почему это работает, и собираем карту всех основных техник.

Каждый промпт на этой странице можно изменить и открыть в ChatGPT, Claude или другом ИИ-приложении.

Промпт-инжиниринг: это практика написания, проверки и доработки инструкций для ИИ-модели, чтобы она стабильно выдавала нужный результат. Он охватывает то, что вы кладёте в промпт (задачу, контекст, примеры, входные данные), и то, как вы это располагаете (порядок, формат, разделители). Термин звучит технически, но по большей части это аккуратное письмо плюс проверка результатов.

Эта страница: оглавление руководства Coddy по промпт-инжинирингу. Здесь объясняется, почему этот подход работает, собрана карта основных техник со ссылками на страницы, где они разобраны, и показана разница между случайным промптом и продуманным.

Почему промпт-инжиниринг работает

Языковая модель генерирует текст, предсказывая, что идёт дальше, маленькими кусочками, на основе всего, что у неё перед глазами. У неё нет доступа к вашим намерениям, вашему проекту или прошлым чатам, если этого текста нет во входных данных. Поэтому промпт не просьба к разуму, который вас уже понимает; это вся ситуация, на которую модель отвечает.

Отсюда прямое следствие. Каждый вопрос, который промпт оставил открытым, модель обычно закрывает самым типичным вариантом: самый распространённый язык, самая обычная длина, самая обычная аудитория. Иногда типичный вариант и есть то, что вам нужно. Когда нет, решение в том, чтобы закрыть этот вопрос в промпте. Хороший промпт сужает круг правдоподобных ответов, пока большая часть оставшихся не станет полезной.

Ремесло определяют ещё два факта. Ответы сэмплируются, поэтому один и тот же промпт может давать разные ответы при разных запусках; промпт хорош, только если он работает в большинстве случаев, а не один раз. И модель считает любой текст в промпте потенциально значимым, поэтому вставленное письмо или случайная фраза могут быть прочитаны как инструкция, если вы явно не пометите их как материал.

Случайный промпт против продуманного

Обе вкладки просят одно и то же: разделить отзывы покупателей на положительные и отрицательные. Сравните, что возвращает каждая.

Эти отзывы положительные или отрицательные? 1. Приложение быстрое, но сегодня дважды выкинуло меня из аккаунта. 2. Именно то, что мне было нужно для учёта пробежек. 3. Поддержка так и не ответила на моё письмо.
Try it
Example replyReplies vary between models and runs.

Вот разбор:

  1. Смешанный. Пользователю нравится скорость, но его раздражает, что его выкидывает из аккаунта.
  2. Положительный. Приложение отвечает его потребностям в учёте пробежек.
  3. Отрицательный. Пользователь недоволен тем, что поддержка не ответила.

В целом отзывы смешанные: один положительный, один отрицательный и один смешанный.

Случайный ответ разумен для человека, но программа не сможет его использовать: метки перемешаны с объяснениями, появилась третья категория, которую вопрос не предлагал, а в конце добавлен вывод. Продуманный промпт определяет каждую метку, фиксирует форму ответа примером и оборачивает отзывы в теги, чтобы их было труднее спутать с инструкциями. На тысяче отзывов он даёт вывод, который программа разберёт гораздо стабильнее, а когда нужна гарантия, остаток разрыва закрывают функции структурированного вывода в API и проверка в вашем коде.

Основные техники

Каждая техника ниже закрывает свой вид разрыва между тем, что вы имели в виду, и тем, что получила модель. Большинство реальных промптов сочетают несколько.

ТехникаЧто делаетКогда применять
Zero-shot промптингДаёт инструкцию без примеровЗадача распространённая и ясно описана
Few-shot промптингПоказывает несколько примеров входа и выходаФормат или суждение проще показать, чем описать
Chain of thought (цепочка рассуждений)Просит рассуждение перед ответомВ задаче несколько шагов, как в математике или логике
Ролевой промптингЗадаёт, чьим голосом и по чьим стандартам писатьВажны аудитория и уровень
Структурированный выводФиксирует ответ в JSON, таблице или шаблонеРезультат читает программа или таблица
Разделители и XML-тегиОтделяют инструкции от вставленного материалаВ промпте есть документы, код или текст пользователя
Шаблоны промптовПревращают удачный промпт в шаблон с пропускамиВы повторяете однотипные запросы
Цепочки промптовДелят работу на шаги, которые передают результат друг другуОдин промпт пытается сделать слишком много
Self-consistencyБерёт несколько ответов и выбирает большинствоОдна линия рассуждений ненадёжна
Tree of thought (дерево мыслей)Исследует и оценивает несколько линий рассужденийЗадача требует планирования или перебора
ReActЧередует рассуждения с вызовами инструментовМодели нужно что-то найти или выполнить действие
Мета-промптингПоручает модели написать или улучшить промптВы не знаете, как сформулировать промпт
Контекст-инжинирингПроектирует всё, что видит модель, а не только инструкциюВы строите приложение или агента вокруг модели

Если вы новичок, начните с частей одного промпта на странице как написать промпт, затем переходите к few-shot промптингу и структурированному выводу. Эти три темы закрывают большинство повседневных задач.

Промпт для программы

Промпты, встроенные в программы, запускаются тысячи раз на входных данных, которых ещё никто не видел, поэтому в них прописано больше, чем в сообщении в чате. Промпт ниже пишет сообщения коммитов по диффу кода. Отключайте части и смотрите, от чего защищает каждая: без примеров стиль уплывает, а без ограничений модель может использовать типы, которых нет в вашей команде, например perf или style.

Сообщение коммита по диффу
Fill in
Parts
Ты пишешь сообщения git-коммитов для команды, которая следует формату Conventional Commits.
Напиши сообщение коммита для диффа ниже.
feat(cart): add quantity selector to cart items fix(api): return 404 instead of 500 for an unknown user id
Первая строка: type(scope): краткое описание, не длиннее 60 символов, в повелительном наклонении. Затем пустая строка и до трёх пунктов списка, объясняющих, зачем сделано изменение.
Используй только эти типы: feat, fix, refactor, docs, test, chore. Если дифф смешивает несвязанные изменения, скажи об этом вместо того, чтобы писать сообщение.
function validatePassword(password) { - if (password.length > 8) { + if (password.length >= 8) { return null; } return 'Password must be at least 8 characters'; }
Try it
Example replyReplies vary between models and runs.
fix(auth): accept passwords of exactly 8 characters

- The check used > 8, so an 8-character password was rejected
- The rule now matches the error message, which says "at least 8"

Как научиться промпт-инжинирингу

Учатся этому, запуская промпты и внимательно разглядывая, что приходит в ответ. Практичный путь:

  1. Изучите части промпта. Задача, контекст, входные данные, формат и ограничения. Большинство неудач сводятся к тому, что одной из них нет.
  2. Выберите реальную задачу, которую вы повторяете, например пересказ тикетов, объяснение ошибок или черновики писем, и напишите для неё промпт.
  3. Соберите от пяти до десяти тестовых входов, включая неудобные: пустой вход, очень длинный, вход на другом языке.
  4. Меняйте по одной вещи за раз и перезапускайте все входы. Если поменять три вещи и результат станет лучше, вы не узнаете, какая помогла. Этот цикл подробно разобран на странице доработка промптов.
  5. Добавляйте техники, когда их требует конкретная ошибка. Примеры, когда уплывает формат, пошаговые рассуждения, когда неверны многошаговые ответы, разделители, когда вставленный текст просачивается в инструкции.

Крупные разработчики моделей тоже публикуют руководства по промптингу для своих моделей, и их стоит прочитать: в каждом описано, на что лучше всего реагирует именно это семейство моделей.

Промпт-инженер: это профессия?

Некоторые компании нанимали людей на должность «промпт-инженер», особенно когда чат-модели только стали общедоступными. Чаще этот навык входит в другую работу. Разработчики пишут промпты для ИИ-функций, которые они создают, команды поддержки пишут их для ассистентов, отвечающих клиентам, а аналитики и авторы пользуются ими каждый день.

В командах, которые делают ИИ-продукты, работа стала шире. Выбор того, что попадает во вход модели (найденные документы, результаты инструментов, история переписки, память), важен не меньше, чем формулировка инструкции, и эту более широкую работу часто называют контекст-инжинирингом. Вторая половина: измерять, работает ли промпт на многих входах, это обычно называют оценкой (evaluation).

Что меняется с новыми моделями

Ранний промпт-инжиниринг держался на трюках: волшебные фразы, сложные персонажи, повтор одной инструкции несколько раз. Современные модели гораздо лучше следуют простым инструкциям, а рассуждающие модели и так прорабатывают задачу внутри перед ответом, поэтому просьба думать пошагово даёт меньше, чем раньше.

Не изменилось то, что никогда и не было трюком. Модель по-прежнему не может знать вашу аудиторию, ваши данные, ваши ограничения или то, как выглядит хороший результат, пока вы этого не скажете. Ясная постановка задачи: навык, который не устаревает, и именно ему посвящена большая часть страниц этого руководства.

Часто задаваемые вопросы

Что такое промпт-инжиниринг простыми словами?

Промпт-инжиниринг: это умение писать инструкции для ИИ-модели настолько точно, чтобы она давала нужный ответ, а потом проверять и дорабатывать их, пока она не начнёт делать это стабильно. Сюда входит, что вы сообщаете модели (задача, контекст, примеры), и как вы это располагаете (порядок, формат, разделители).

Можно ли изучить промпт-инжиниринг без программирования?

Да. Основные навыки: ясно ставить задачу, давать контекст, приводить примеры и задавать формат ответа. Всё это работает в обычном чат-приложении. Программирование пригодится, когда нужно запускать промпт много раз, проверять его на наборе входных данных или передавать результат в программу.

Сколько времени нужно, чтобы освоить промпт-инжиниринг?

На основы хватит одного дня: части хорошего промпта и несколько техник вроде few-shot примеров и структурированного вывода. Стабильные результаты на реальной задаче требуют больше времени, потому что они появляются, когда вы проверяете промпт на многих входных данных и исправляете случаи, где он ломается.

Промпт-инженер: это настоящая профессия?

Некоторые компании нанимали людей на должность «промпт-инженер», но чаще этот навык входит в другую работу: разработчиков ИИ-функций, авторов текстов, аналитиков, команд поддержки. В командах, которые делают ИИ-продукты, он пересекается с оценкой качества и с проектированием всего, что видит модель, это сейчас часто называют контекст-инжинирингом.

Нужен ли промпт-инжиниринг с новыми моделями?

Новым моделям нужно меньше трюков. Они лучше следуют простым инструкциям, а рассуждающие модели решают задачи по шагам без подсказки «думай пошагово». Полезным остаётся то, что никогда и не было трюком: сформулировать задачу, дать модели факты, которых она знать не может, и описать, как выглядит хороший ответ.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ