Основы

Типичные ошибки промпт-инжиниринга и как их исправить

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

  • Автор: Vijayraj Palanisamy
  • Обновлено
  • 3 мин чтения

Перевод английского оригинала. Код, промпты и вывод моделей оставлены на английском.

Большинство сбоев промптов вызвано небольшим набором повторяющихся ошибок. У каждой из них ниже есть узнаваемый симптом, исправление и ссылка на правило PromptFlowEngine, которое её обнаруживает, с примером срабатывания и исправленным промптом.

Ошибки ясности

1. Не указана цель

Промпт описывает материал и нигде не говорит, что с ним делать. Модель гадает: резюмировать, анализировать или переписывать.

Исправление: начните с глагола в повелительном наклонении, называющего результат. Справка: отсутствует цель.

2. Расплывчатые формулировки

Слова вроде «что-то», «всякое» и «и т. д.» просят модель придумывать детали.

Исправление: перечислите реальные пункты. Если список открытый, ограничьте его: «не более 3 из этих». Справка: расплывчатые формулировки.

3. Смягчённые инструкции

«Постарайся», «если возможно» и «может быть» превращают требование в совет, и модель считает его необязательным.

Исправление: сформулируйте это как требование или скажите, когда именно оно применяется. Справка: смягчённые инструкции.

4. Только запретительные ограничения

Промпт из одних «не делай» говорит модели, чего избегать, и ничего не говорит о том, что создавать.

Исправление: сопоставьте каждому запрету желаемое поведение. Справка: только запретительные ограничения.

Ошибки конкретности

5. Размеры без чисел

«Короткий», «несколько» и «подробный» меняются от запуска к запуску, что ломает вёрстку и парсеры.

Исправление: используйте число и единицу, например «до 150 слов». Справка: неколичественный размер.

6. Нет формата вывода

Без формата модель выбирает между прозой, пунктами и таблицей, причём каждый раз по-разному.

Исправление: укажите структуру, а если результат читает код, то и схему. Справка: не указан формат вывода и не указана длина.

7. Ссылки на то, чего нет

«Исправь баг выше» или «используй приложенный файл» в промпте, где нет ни того ни другого.

Исправление: включите материал или укажите, куда он будет вставлен. Справка: неясная ссылка.

Ошибки согласованности

8. Противоречивые инструкции

«Будь краток, но подробен». В длинных промптах, которые правят несколько человек, такое накапливается. Модель разрешает конфликт сама и непредсказуемо.

Исправление: определите приоритет и скажите о нём: «Будь краток. Если краткость и точность конфликтуют, выбирай точность». Справка: противоречивые инструкции.

9. Повторы

Повторить что-то дважды для выразительности стоит токенов. Повторить дважды с чуть иной формулировкой — значит создать неопределённость, какая версия считается.

Исправление: формулируйте каждую инструкцию один раз, в том разделе, которому она принадлежит. Справка: дублирующиеся инструкции и почти дублирующиеся инструкции.

Ошибки структуры

10. Стена текста

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

Исправление: разбейте на Задачу, Контекст, Требования, Формат вывода и Ввод. Справка: стена текста.

Ошибки безопасности

11. Пользовательский ввод без разделителей

Переменная шаблона, помещённая прямо в инструкции, позволяет всему, что вводит пользователь, читаться как часть инструкций.

Translate this to French: {{user_text}}

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

12. Секреты и персональные данные в промпте

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

Исправление: маскируйте перед отправкой и не храните учётные данные в файлах промптов. Справка: чувствительные данные. Подробнее: обнаружение персональных данных и секретов в промптах.

Ошибки процесса, которые правила не ловят

  • Проверка на одном входе. Промпт, который работает на вашем примере, может сломаться на реальном трафике. Соберите небольшой тестовый набор. См. оценку промптов.
  • Изменение нескольких вещей сразу. Когда результат меняется, вы не знаете почему. Меняйте что-то одно за итерацию.
  • Отсутствие версий промптов. Если промпт живёт только в окне чата, откатить его нельзя. См. управление промптами.
  • Набивание контекстного окна. Больше контекста — не всегда лучше. См. оптимизацию токенов.

Найдите их в собственных промптах

Вставьте промпт в анализатор промптов PromptFlowEngine. Он применит все перечисленные выше правила, процитирует текст, вызвавший каждое замечание, и предложит исправление. В полном каталоге правил перечислены все.

Применить на практике

Попробуйте: анализатор промптов

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

Связанные инструменты PromptFlowEngine

Ещё по теме «основы»

Все руководства по промпт-инжинирингу