Краевые случаи и проверяемость
Надёжный промпт описывает не только «счастливый путь», но и что делать с пустотой, мусором и неоднозначностью на входе.
Краевой случай — нетипичный вход (пустой, противоречивый, вне темы, на другом языке), на котором плохо спроектированный промпт ломается.
Почему о крае надо думать заранее
На демо-примерах промпт работает, а в проде приходит: пустая строка, текст на другом языке, оскорбление, две задачи в одном сообщении, нерелевантный вопрос. Если поведение для таких входов не задано, модель импровизирует — и часто неудачно. Опишите правила для края явно.
Классифицируй обращение в один из классов:
оплата, доставка, возврат, прочее.
Правила краевых случаев:
- Пустой или бессмысленный текст -> класс «прочее».
- Несколько тем сразу -> выбери основную.
- Текст на другом языке -> сначала пойми смысл, потом классифицируй.
- Оскорбление без сути -> класс «прочее».
Обращение: """{текст}"""Теперь у модели есть детерминированное поведение на нештатных входах, а не догадки.
Типовые краевые случаи
| Вход | Что задать в промпте |
| Пустой/мусорный | Дефолтный класс или «нет данных» |
| Несколько задач сразу | Как выбрать или обработать все |
| Вне темы | Вежливый отказ/перенаправление |
| Двусмысленный | Задать уточняющий вопрос или дефолт |
| Слишком длинный | Что урезать/на чём фокус |
Проверяемость вывода
Хороший вывод можно проверить — программно или человеком. Приёмы:
- Строгий формат (фиксированные классы, JSON) — легко валидировать в коде.
- Самооценка уверенности: «добавь поле confidence от 0 до 1» — отсекаем слабые ответы порогом.
- Опора на источник: цитата/ссылка на фрагмент — проверяет человек.
- Контроль допустимых значений: «класс — строго из списка; ничего иного».
Верни JSON: {"class": один из [оплата, доставка, возврат, прочее],
"confidence": число 0..1}. Класс — строго из списка, иначе «прочее».В коде потом легко проверить, что class в допустимом множестве, а confidence выше порога — иначе отправить на ручную проверку.
Итог
- Описывайте поведение на пустом, мусорном, неоднозначном и нерелевантном вводе заранее.
- Дайте детерминированные правила для края вместо импровизации.
- Делайте вывод проверяемым: строгий формат, допустимые значения, поле уверенности, опора на источник.
- Порог по confidence отправляет слабые ответы на ручную проверку.
Проверьте себя
1. Почему нужно описывать краевые случаи в промпте?
AОни не встречаются в проде
BИначе на нештатном вводе модель импровизирует и часто ошибается
CЭто требование API
DЧтобы удлинить промпт
2. Как поле confidence помогает проверяемости?
AОно ускоряет модель
BПо порогу уверенности можно отсекать слабые ответы и отправлять их на ручную проверку
CОно гарантирует правильность
DОно убирает галлюцинации полностью
3. Что делает вывод легко валидируемым в коде?
AСвободная проза
BСтрогий формат с фиксированным множеством допустимых значений
CСлучайный набор слов
DДлинные рассуждения