Хорош ли промпт, по тексту не определить. Спорит ли он сам с собой — определить можно. Проверки здесь намеренно механические: требование выдать JSON без описания этого JSON; указание длины без единого числа; плейсхолдер, всё ещё не заполненный; оборот, который в одном предложении требуют, а в другом запрещают. Каждое замечание указывает на фрагмент, откуда оно взялось: результат линтера, который нельзя найти в тексте, — просто мнение. Часть правил касается не правильности, а стоимости: сплошные заглавные и уговоры добавляют токены к каждому запросу, ничего не меняя в ответе.
Возможности
Противоречия, где одно и то же и требуется, и исключается
Требования JSON без описанной формы
Указания длины без единого числа
Незаполненные шаблонные метки — как ошибки
Теги в духе XML, открытые и не закрытые
Указания не рассуждать — обычно дают обратный эффект
Каждое замечание указывает на точный найденный текст
Оценка, где ошибки весят больше заметок
Как использовать Линтер системного промпта
Вставьте системный промпт
Читайте замечания, начиная с ошибок
Исправьте противоречия: именно они меняют поведение
Перепроверяйте по ходу правки
Пример
Ввод
Always include the order number. Never include the order number if unverified.
Результат
Possible contradiction: “the order number” is both asked for and ruled out
Отмечено противоречие, которое я задумал. — Правило с исключением часто так и читается. Если исключение намеренное, сформулируйте и первое указание условно, чтобы приоритет был явным.
Жалуется на JSON, хотя я описываю форму. — Проверка ищет видимый ключ или схему. Если у вас это в прозе, показать маленький пример всё равно понятнее.
Отмечает «всегда» и «никогда». — Только как заметки. Абсолютные формулировки легко писать и трудно соблюдать, и они обычный источник противоречий дальше по тексту.
Отмечен длинный промпт. — Длина не ошибка. Заметка есть потому, что середина длинного промпта — место, где инструкции теряются: непреложные лучше ставить в начало или в конец.
Часто задаваемые вопросы
Если всё исправить, промпт станет хорошим?
Нет. Это механические проверки: противоречия, недостающие форматы, мёртвые метки. Верны ли сами инструкции — суждение о вашей задаче, которого не выносит ни один линтер.
Почему отмечается «не думай»?
Указания пропустить рассуждение скорее ухудшают вывод, чем сокращают его, а на нынешних моделях могут вытолкнуть рассуждение в видимый ответ вместо того, чтобы подавить. Работает просьба ответить короче.
Почему важны заглавные?
Сплошные заглавные не несут того выделения, что для человека, и стоят больше токенов, чем те же слова строчными. Это заметка, а не ошибка.
Как работает поиск противоречий?
Он ищет одну и ту же именную группу и в требуемом, и в запрещённом, включая уточнённый вариант. Он намеренно узок: скорее пропустит тонкий конфликт, чем завалит вас ложными срабатываниями.
Подходит ли это любому промпту?
Он написан для текста в форме инструкций: системные промпты, описания инструментов, тела навыков. На обычной прозе он выдаст заметки, которые мало что значат.
Связанные инструменты
Различия промптов — Сравните две версии по словам, с разницей в токенах.
XML-разделы промпта — Оберните разделы в теги, из которых содержимое не вырвется.