Инженер против попугая: как пишут промпты для больших продакшен-сервисов

Инженер против попугая: как пишут промпты для больших продакшен-сервисов

Меня зовут Полина Белокрыс, я промпт-инженер в hh.ru. В моей команде мы развиваем ИИ-ассистента для работодателей, который берёт на себя рутинные задачи и помогает бизнесу сосредоточиться на главном — внимательной работе с подходящими кандидатами. В этой статье расскажу, как устроен промптинг в продакшене и почему написать промпт — это не просто диалог с ChatGPT.

Почему «инженер против попугая»?

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

Мы делаем это с помощью чётких ограничений, структурированных промптов и тщательного тестирования. Цель — построить детерминированный контекст, в котором модель генерирует предсказуемые, безопасные и качественные ответы.

Эта статья будет полезна промпт-инженерам, начинающим ML-инженерам и специалистам по GenAI, которые работают с языковыми моделями в продуктовых системах.

Промпты в быту и в продакшене: в чём разница?

В повседневном использовании взаимодействие с ИИ простое: вы задаёте вопрос, получаете ответ, уточняете — и продолжаете диалог. Если результат не устраивает, можно переформулировать запрос или начать заново.

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

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

Как писать хороший промпт: ключевые принципы

Пишите инструкции на английском, примеры — на русском

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

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

Примеры пользовательских сообщений, напротив, стоит оставлять на русском. Это помогает модели корректно сопоставлять инструкции с реальными данными.

Используйте фреймворки

Фреймворки помогают структурировать промпт. Хотя их названия могут отличаться, логика схожа: нужно задать роль модели, контекст, цель, задачу, алгоритм действий, ограничения и формат ответа.

Хороший промпт — это не просто запрос, а чётко организованная инструкция, где каждый элемент выполняет свою функцию.

Размечайте текст

Используйте разметку — markdown или XML. Заголовки, списки, жирный шрифт — это не просто оформление. Модели воспринимают разметку как структурные сигналы, которые снижают неоднозначность и улучшают понимание.

Особенно это важно в многошаговых задачах, где модель должна следовать сложной логике.

Приводите примеры — но осторожно

Примеры — мощный инструмент. Они могут показывать не только желаемый ответ, но и ход рассуждений модели.

Однако будьте осторожны: модель может начать дословно копировать формулировки или подгонять все ответы под шаблон.

В одном из промптов мы привели пример вопроса к кандидату: «Готовы ли вы к командировкам в Рязань?». После этого модель стала задавать этот вопрос даже в вакансиях, где командировки не упоминались. Работодатели были в недоумении. Пришлось срочно переписывать промпт.

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

Чётко прописывайте запреты и ограничения

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

Один кандидат спросил, что думает бот о работе в известной российской компании. Модель ответила: «Не хочу быть винтиком большой корпорации». Такой ответ неприемлем в продукте.

Теперь в промпте чётко прописано: бот не выражает мнений и не отклоняется от ассистентских функций.

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

Длина сама по себе не проблема. Современные модели справляются с большими объёмами инструкций. Проблема — в несогласованности.

Если правила противоречат друг другу или структура запутана, модель начнёт вести себя непредсказуемо. Главное — не краткость, а ясность, логичность и внутренняя согласованность.

Используйте «размышления» модели

Попросите модель рассуждать вслух — это помогает двумя способами.

  • Для отладки: анализ «логики» модели (пусть и имитируемой) показывает, как она понимает задачу и где ошибается.
  • Для качества: пошаговое обдумывание повышает вероятность правильного ответа.

Формулируйте: «Подумай шаг за шагом» или «Объясни своё решение» — и просите финальный ответ после анализа.

Учитывайте дату отсечения знаний

У каждой модели есть cut-off date — момент, после которого она ничего не знает. Если модель считает, что сейчас 2025 год, она может ошибиться в расчёте стажа или релевантности опыта.

Если задача зависит от актуального контекста, передавайте дату явно. Не рассчитывайте, что модель «и так знает».

Следите за порядком блоков

Расположение инструкций имеет значение. Исследования показывают, что внимание модели снижается в середине промпта — это U-shaped attention bias. Модель лучше воспринимает начало и конец.

Критически важные правила лучше ставить в начало или в конец. Середину стоит оставлять для вспомогательной информации.

Экспериментируйте с параметрами генерации

На поведение модели влияют параметры: температура, top-p, top-k, repetition penalty.

Например, при массовой рассылке питчей вакансий можно сгенерировать несколько вариантов с высокой температурой, а затем случайно выбирать один. Это добавит разнообразия без персонализации.

Но помните: высокая температура увеличивает риск галлюцинаций. Всегда ищите баланс.

Разные модели — разные промпты

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

Одна модель справляется с минимальными подсказками, другой нужна детальная инструкция. При смене модели закладывайте время на переработку промптов — перенос as is почти невозможен.

Как тестировать промпты: практические советы

Поведение модели не всегда воспроизводимо

Даже при одинаковых входных данных и параметрах ответы могут отличаться. Генеративная природа ИИ вносит случайность.

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

Тестируйте много и часто

Нескольких запусков недостаточно. Чтобы оценить качество, нужно провести множество прогонов на разнообразных примерах.

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

Пополняйте датасет на основе пользовательских логов

Реальные пользователи ведут себя непредсказуемо. Их запросы — ценный источник данных для тестирования.

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

Тестируйте в условиях, близких к продакшену

Модели чувствительны к формату входных данных. Даже мелкие отличия в окружении могут изменить поведение.

Тестируйте в максимально приближенной к реальности среде. Это снизит риски при запуске.

Идеального промпта не существует

Нет универсального рецепта. Модели, задачи и бизнес-логика везде разные. Но описанные принципы — прочный фундамент.

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

Хорошая новость: это всё-таки инженерия. Её можно освоить. Плохая — модель всё равно найдёт способ вас удивить.

Читать оригинал