Техники

Оптимизация промптов: итеративный метод

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

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

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

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

Решите, что вы оптимизируете

Промпт можно оптимизировать по нескольким осям, и они тянут в разные стороны.

Цель Чем измеряется Часто обходится в
Качество Доля пройденных тестов Токены
Стабильность Один ввод — одна форма вывода Гибкость
Стоимость Входные и выходные токены на вызов Контекст, примеры
Задержка Время до первого и последнего токена Глубина рассуждений
Безопасность Устойчивость к инъекциям и утечкам Немного полезности

Выберите основную цель и предел для остальных, например «повысить долю пройденных тестов, не превышая 800 входных токенов».

Цикл оптимизации

1. Сначала исправьте статические проблемы

Некоторые дефекты находятся без модели: нет цели, расплывчатые слова, размеры без чисел, противоречивые инструкции, нет формата вывода, повторяющиеся предложения, переменные без разделителей. Устраните их, прежде чем тратиться на вызовы модели. Анализатор промптов PromptFlowEngine перечисляет их, каждый — с предлагаемым исправлением.

2. Соберите тестовый набор

Соберите от 20 до 50 входных данных, отражающих реальное использование. Включите:

  • Типичные случаи.
  • Граничные случаи: пустой ввод, очень длинный, смесь языков, некорректный.
  • Враждебные случаи: текст, пытающийся изменить инструкции.
  • Прошлые сбои. Каждая ошибка становится тестом.

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

3. Зафиксируйте базовый уровень

Запустите текущий промпт на каждом вводе и запишите результаты. С этим числом сравнивается каждое изменение. Без него нельзя отличить улучшение от шума.

4. Изучите сбои

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

5. Сформулируйте одну гипотезу и сделайте одно изменение

«Модель добавляет комментарии, потому что промпт не требует возвращать только JSON». Сделайте это изменение и ничего больше.

6. Перезапустите весь набор

Проверьте, что сбои исправлены и, не менее важно, что ничего из прежде проходившего теперь не падает. Исправление для одного случая, ломающее два других, — это регрессия.

7. Оставьте или откатите, затем повторите

Записывайте, что вы изменили и почему. О версионировании см. управление промптами.

Приёмы доработки, которые обычно работают

Симптом Доработка
Длина вывода меняется Замените слова о размере числами
Форма вывода меняется Добавьте явный формат или схему
Игнорирует правило Вынесите его из абзаца в список; уберите конфликты
Слишком общий ответ Добавьте контекст аудитории и области
Ошибки в граничных случаях Добавьте правило или пример для этого случая
Выдумывает факты Предоставьте источники и требуйте «не указано» при отсутствии
Многословие Задайте лимит слов и скажите, что опустить

Приёмы доработки, которые обычно не работают

  • Добавление нажима (заглавные буквы, «очень важно») в каждую строку.
  • Повторение одной и той же инструкции в нескольких местах.
  • Добавление нового правила для частного случая после каждого сбоя без проверки на конфликты.
  • Изменение формулировки того, что не было причиной.

Оптимизация токенов

Когда качество приемлемо, снижайте стоимость, не меняя поведения:

  1. Уберите приветствия, вежливые обороты и лишние слова.
  2. Удалите повторяющиеся и почти повторяющиеся предложения.
  3. Вырежьте контекст, который не меняет ни одного ответа в тестовом наборе.
  4. Сократите число примеров и перепроверьте.
  5. Поставьте стабильную часть промпта первой, чтобы сработало кеширование у провайдера.

Шаги 1 и 2 механические, и их можно безопасно автоматизировать. Оптимизатор промптов PromptFlowEngine делает их, а затем проверяет, что каждое исходное предложение, требование и защищённый фрагмент на месте, так что более короткий промпт просит ровно то же, что и длинный. Подробности — в разделе об оптимизации токенов.

Автоматическая оптимизация

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

Похожая осторожность нужна, когда вы просите чат-модель «улучшить этот промпт». Она выдаст что-то, что читается лучше. Но может и отбросить ограничение или добавить допущение. Сравните результат с оригиналом и убедитесь, что каждое требование сохранилось.

Когда остановиться

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

Что может и чего не может сказать оценка на основе правил

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

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

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

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

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

Ещё по теме «техники»

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