← 返回列表

AI Серия интервью 12: Как оптимизировать Prompt?

Оптимизация Prompt (Prompt Engineering / Optimization) — ключевой навык, позволяющий большим языковым моделям «слушаться». Особенно в RAG-системах от неё напрямую зависит, будет ли модель добросовестно следовать извлечённому содержимому, избегать галлюцинаций и выдавать форматированный вывод.


1. Ключевые принципы оптимизации Prompt

  1. Чёткость > Сложность: Простые прямые инструкции часто эффективнее витиеватых цепочек рассуждений.
  2. Достаточно ограничений: Чётко сказать модели «что можно и что нельзя».
  3. Предоставьте примеры: Few-shot работает стабильнее, чем Zero-shot.
  4. Проверяемость: Пусть модель выдаёт ссылки или уровень уверенности, чтобы было легче проверять.
  5. Итеративная оптимизация: Начните с базового варианта, меняйте только одну переменную за раз и сравнивайте результаты.

2. Конкретные приёмы оптимизации (от простых к сложным)

1. Настройка роли (System Prompt)

Ты — профессиональный помощник поддержки клиентов. Отвечай на вопросы только на основе предоставленных ниже [Справочных материалов].
Если не знаешь ответа, прямо скажи «В материалах нет соответствующей информации», не придумывай.
  • Назначение: Установить границы и тон.
  • Настройка: Тон (профессиональный/дружеский), строгость ограничений (строгий/мягкий).

2. Чёткая инструкция

❌ Плохо: «Ответь пользователю на вопрос.»
✅ Хорошо: «Исключительно на основе [Справочных материалов] ниже. Если в материалах нет ответа, ответь „Я не могу ответить на этот вопрос“.“

3. Контроль формата вывода

Выведи в формате JSON:
{
  "answer": "твой ответ",
  "confidence": "высокая/средняя/низкая",
  "sources": [1, 3]
}
  • Назначение: Упрощает последующий разбор, цитирование и отладку.

4. Примеры Few-shot (очень эффективно)

Пример 1:
Вопрос: Сколько дней отпуска?
Справочные материалы: Правила отпуска: 1 год — 5 дней, 10 лет — 10 дней.
Ответ: 1 год — 5 дней, 10 лет — 10 дней.

Пример 2:
Вопрос: Как рассчитывается оплата сверхурочных?
Справочные материалы: Рабочие дни — 1.5 ставки, выходные — 2 ставки.
Ответ: Рабочие дни — 1.5 ставки, выходные — 2 ставки.

Теперь ответь:
Вопрос: {вопрос пользователя}
Справочные материалы: {извлечённое содержимое}
Ответ:
  • Совет: Примеры должны покрывать разную сложность, хорошо бы включить один случай, когда нужно отказаться от ответа.

5. Принудительное цитирование

В конце ответа укажи номер источника в формате [citation:X]. Например: «Отпуск — 5 дней[citation:1].»
Если объединяешь несколько источников, укажи каждый отдельно.

6. Установка порога отказа

  • Жёсткое ограничение: «Если справочные материалы полностью не относятся к вопросу, ответь „Материалы нерелевантны“».
  • Мягкое ограничение: Используй оценку уверенности из поиска; если она ниже порога, автоматически переходи к отказу.

7. Цепочка рассуждений (Chain-of-Thought) для многошаговых выводов

Вопрос: Кто начальник Чжана Сана?
Шаги: 1. Найди отдел Чжана Сана. 2. Найди руководителя этого отдела. 3. Дай окончательный ответ.
Пожалуйста, подумай по шагам и выведи ответ.

8. Отрицательные инструкции (Negative Prompting)

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

3. Как оценить качество Prompt?

Метрика Суть Как измерять
Верность Строго ли ответ основан на справочных материалах Вручную или с помощью RAGAS Faithfulness
Точность отказа Отказывается ли модель, когда нужно Вычислить на тестовом наборе без ответа
Соблюдение формата Выводит ли модель JSON / цитаты как требуется Регулярное выражение
Удовлетворённость пользователя Насколько ответ полезен Обратная связь / A/B-тестирование

Рекомендация: Подготовь небольшой тестовый набор (20–50 граничных случаев), прогоняй его после каждого изменения Prompt и записывай изменения.

4. Распространённые проблемы и направления оптимизации

Проблема Возможная причина Способ оптимизации
Модель игнорирует справочные материалы и отвечает сама Инструкция недостаточно жёсткая Изменить на «исключительно на основе следующих материалов», показать отказ в few-shot
Модель постоянно говорит «не знаю» Слишком высокий порог отказа Снизить порог или проверить качество поиска
Формат вывода нарушен, не JSON Инструкция нечёткая Добавить строгий пример формата или использовать function calling
Ответ слишком длинный/короткий Не указана длина «Ответь не более чем 3 предложениями»
Ошибки в многошаговом выводе Модель недостаточно способна к рассуждению Просить показать пошаговые рассуждения или использовать более мощную модель
Появляются вымышленные цифры/даты Модель опирается на свои знания Подчеркнуть: «Не используй никакие числа из своей памяти, смотри только на материалы»

评论

暂无已展示的评论。

发表评论(匿名)