Промпт-инжиниринг
Промпт-инжиниринг — практика разработки и проверки инструкций для языковой модели, чтобы её ответ соответствовал конкретной задаче. Она включает определение задачи, добавление полезных примеров, описание результата и его проверку. Более ясный промпт может уменьшить неоднозначность, но не может создать отсутствующие доказательства или установить правильность ответа.
Автор: Ai Flowi · Опубликовано
Начните с практического вопроса: что модель должна сделать с этими входными данными и как вы оцените её ответ? Именно это отличает промпт-инжиниринг от сбора эффектно звучащих фраз. На странице используется вымышленная задача обработки сервисного запроса, чтобы показать необходимые решения; здесь не заявлены ни полученный ответ модели, ни измеренное улучшение.
Что должно входить в промпт
Инструкция задачи называет операцию: извлечь название запрошенной комнаты и определить, каких деталей бронирования не хватает. Контекст предоставляет материал, к которому применяется операция. Ограничения указывают, что должно остаться неизвестным, а не быть угадано. Требования к результату описывают, как другой человек или программа прочитает ответ. Примеры показывают границу между допустимой интерпретацией и выдумкой.
Эти части должны согласовываться. Просьба составить краткое изложение и одновременное требование сохранить каждую деталь источника создают конкурирующие ожидания. Указание использовать только предоставленные факты при требовании полной даты бронирования побуждает модель заполнить информационный пробел. Разрешите эти конфликты до изменения тона или добавления описания роли.
Отдельный вопрос о том, какие документы и предыдущие сообщения включать, рассматривает контекстная инженерия. Даже тщательно составленная инструкция может не сработать, если сведения в контексте нерелевантны, устарели или объём контекста превышает возможности выбранной модели.
Примеры промпт-инжиниринга: улучшение промпта для неизменной задачи
Синтетические входные данные: «Пожалуйста, организуйте бронирование комнаты Cedar в пятницу после полудня». Предположим, приложению нужны название комнаты, календарная дата и время. «В пятницу после полудня» не задаёт однозначной даты или точного времени. Промпт должен сохранить известную комнату и показать недостающие детали.
пример конфигурации, а не запись теста. Версии ниже задают извлечение данных и не выполняют бронирование.
| Версия | Инструкция | Причина изменения |
|---|---|---|
| Расплывчатая задача | Сделайте бронирование по этому сообщению. | Не различает извлечение данных и внешнее действие бронирования. |
| Задача с заданными границами | Извлеките название комнаты и перечислите недостающие сведения о дате или времени. Ничего не бронируйте. | Отделяет интерпретацию от выполнения. |
| Требования к результату | Верните room, date, time и clarification_needed. Используйте null для отсутствующих даты и времени. | Делает отсутствие информации видимым для последующей проверки. |
| Пример допустимой интерпретации | День недели без календарной даты остаётся неуточнённым. | Показывает, как следует обрабатывать неоднозначную фразу. |
Составленный автором целевой результат сохраняет Cedar, оставляет дату и время неуточнёнными и запрашивает уточнение. Это ориентир для приёмки, а не записанный ответ. Следует проверить, выполняет ли его выбранная модель, используя реальные настройки модели и входные данные.
Делайте инструкции конкретными, не перегружая их
Используйте глаголы, описывающие наблюдаемую работу: извлечь, классифицировать, сравнить или процитировать. «Будьте полезны» не позволяет определить, является ли угаданная дата бронирования ошибкой. «Используйте null, если дата отсутствует» — позволяет. Чётко отделяйте данные от инструкций, чтобы предложение внутри запроса рассматривалось как материал для интерпретации.
Инструкция игнорировать команды внутри цитируемых данных отражает полезный замысел разработчика, но одна формулировка промпта не является границей контроля доступа. Запрос к модели не должен предоставлять право выполнить бронирование. Приложение должно проверить обязательные поля и потребовать надлежащую авторизацию до любого действия.
Примеры помогают, когда сложность заключается в определении критериев принятия решения, например в различении предпочтения и подтверждённой детали. Статья о промптинге с несколькими примерами объясняет выбор примеров и отделение проверочных примеров от промпта. Большее число примеров не обязательно полезнее.
Как это выглядит в AI Flowi Workflow
Для сборки текста инструкции используйте справочник Prompt Template.
Объяснение Structured Output рассматривает требования к полям и схемам машиночитаемого ответа.
В этом запросе на бронирование room должно сохранять Cedar, а date и time остаются null, пока пользователь не предоставит точные значения. Предлагаемое поле clarification_needed должно указывать обе недостающие детали. Отклоняйте ответ, который выдумывает календарную дату из пятницы без заданной опорной даты, даже если полученная дата синтаксически корректна.
Предпочтение времени после полудня и подтверждённое время — разные значения. Если предпочтение важно, сохраните его в объяснении, но не превращайте молча в точное время. Аналогично запрос комнаты Cedar не означает, что она свободна. Извлечение названия комнаты считается успешным, когда оно сообщает название запрошенной комнаты, а не обещает бронь.
Настройку оценивания и категории ошибок рассматривает статья о галлюцинациях LLM.
Здесь оценивается, сохраняет ли версия промпта известные поля, выявляя неоднозначность. Сравнивайте точное значение поля room, решения об использовании null и формулировку уточнения отдельно. Промпт, который задаёт правильный дополнительный вопрос, но теряет название комнаты, ухудшил результат. Промпт, возвращающий все ключи, но угадывающий время, нарушает другое требование; ни один результат не должен скрываться за общим впечатлением полезности.
документировано в каталоге, но не проверено Ai Flowi в промышленной эксплуатации
Каталог компонентов перечисляет эти инструменты; для сравнения промптов бронирования предоставьте собственные учётные записи у провайдеров генерации и оценки с API-ключами и предусмотрите отдельную оплату услуг каждого провайдера.
Как проверять промпт на соответствие задаче?
При сравнении версий промпта зафиксируйте исходный запрос и правила приёмки. Если одновременно менять модель, исходные факты и промпт, другой ответ нельзя приписать изменению инструкции. Записывайте версию промпта и настройки рядом с каждым изученным ответом.
Включите случаи с полной датой, относительным указанием дня недели, отсутствующей комнатой и запросом, который пытается передать команду через свой текст. Оценивайте свойства отдельно: подтверждённые поля, обработку отсутствующей информации, структуру результата и предотвращение несанкционированных действий. Ответ может соответствовать формату, но не пройти проверку обоснованности.
Используйте справочник Agent, только если проекту действительно нужны инструменты. Начальные шаблоны для конкретных задач ищите в документированных сценариях использования, учитывая заявленный объём тестирования. Проверка промпта не подтверждает работоспособность подключённого инструмента или всего рабочего процесса.
Типичные ошибки и ограничения
Не считайте связный, грамотно сформулированный ответ доказательством успешного прохождения проверки, не раскрывайте конфиденциальные примеры в промпте, доступном другим пользователям, и не копируйте в него ответы проверочных примеров. Не используйте интерпретацию модели там, где детерминированное правило уже задаёт ответ. Промпт-инжиниринг полезен для задач, зависящих от языка, но проверка обоснованности ответа, валидация и управление разрешениями приложения остаются отдельными задачами.
По теме: Автоматическая оптимизация промптов: генерация и оценка вариантов.