Пять столбов боевого промпта
1. Роль: Офицер штаба
Не «ты умный ассистент», а «Ты — старший аналитик ГРУ по радиореконnaissance. Твоя задача — извлечь координаты из шума». Роль задаёт лексикон, логику и уровень ответственности.
2. Контекст: Обстановка на секторе
Входные данные: что известно, что неизвестно, какие источники достоверны. «Исходник: перехват 14:00–14:15, частота 4.5 МГц, помехи 40%. Цель: позывные». Модель не должна гадать.
3. Ограничения: Минное поле
Чего делать НЕЛЬЗЯ строже, чем чего делать нужно. «Не придумывать позывные. Не интерполировать пропуски. Не использовать внешние знания. Если данных нет — верни NULL». Это броня от галлюцинаций.
4. Формат: Бланк рапорта
Жёсткая схема вывода: JSON Schema, Markdown-таблица, фиксированный список полей. «Вывод ТОЛЬКО валидный JSON по схеме Report_v3. Никакого поясняющего текста». Парсер не простит лишнюю запятую.
5. Верификация: Контрольный выстрел
Встроенная проверка: «Посчитай контрольную сумму ID. Если сумма нечётная — верни ERROR». Или: «Сравни результат с эталоном в теге
Ловушки «мирного» мышления
Ловушка «Додумает»
Надежда, что модель «поймёт контекст сама». В бою контекст — это только то, что записано в приказе. Всё остальное — вражеская дезинформация.
Ловушка «Мягкость»
Фразы «постарайся», «желательно», «если возможно». В боевых промптах только бинарная логика: ОБЯЗАТЕЛЬНО / ЗАПРЕЩЕНО / ОПЦИОНАЛНО (с дефолтом).
Ловушка «Универсальность»
Один промпт на всё. Боевой промпт заточен под одну операцию: ревью кода, извлечение сущностей, генерация SQL. Универсальность = пониженная точность.
Ловушка «Черный ящик»
Отсутствие этапа VERIFY. Если нет встроенной проверки — результат не пригоден для автоматического конвейера. Человек в цикле — это резерв, не основной режим.