AI Серия интервью 12: Как оптимизировать Prompt?
Оптимизация Prompt (Prompt Engineering / Optimization) — ключевой навык, позволяющий большим языковым моделям «слушаться». Особенно в RAG-системах от неё напрямую зависит, будет ли модель добросовестно следовать извлечённому содержимому, избегать галлюцинаций и выдавать форматированный вывод.
1. Ключевые принципы оптимизации Prompt
- Чёткость > Сложность: Простые прямые инструкции часто эффективнее витиеватых цепочек рассуждений.
- Достаточно ограничений: Чётко сказать модели «что можно и что нельзя».
- Предоставьте примеры: Few-shot работает стабильнее, чем Zero-shot.
- Проверяемость: Пусть модель выдаёт ссылки или уровень уверенности, чтобы было легче проверять.
- Итеративная оптимизация: Начните с базового варианта, меняйте только одну переменную за раз и сравнивайте результаты.
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 предложениями» |
| Ошибки в многошаговом выводе | Модель недостаточно способна к рассуждению | Просить показать пошаговые рассуждения или использовать более мощную модель |
| Появляются вымышленные цифры/даты | Модель опирается на свои знания | Подчеркнуть: «Не используй никакие числа из своей памяти, смотри только на материалы» |
评论
暂无已展示的评论。
发表评论(匿名)