Тестирование промптов

Тестирование промптов

Относитесь к промптам как к исходному коду. Одна команда проверяет каждый промпт в репозитории по планке качества, бюджету токенов и порогу серьёзности и проваливает сборку, если что-то сломано.

  • CLI
  • Офлайн
  • Сборка из исходников

Что он делает

Промпт, который работал месяц назад, можно сломать благонамеренной правкой: продублированным абзацем, удалённым форматом вывода, вставленным ключом. Тестирование промптов ловит это на этапе ревью, а не в продакшене.

Команда promptflow check читает указанные файлы промптов и завершается ошибкой, если оценка файла ниже вашего минимума, токенов больше вашего максимума или есть находка не ниже выбранной серьёзности. Порог по умолчанию — critical, поэтому утёкшие учётные данные всегда приводят к ошибке. Настройки хранятся в файле .promptflowrc.json в корне репозитория.

Это статические тесты. Они изучают текст промпта и никогда не обращаются к модели, поэтому быстры, бесплатны и дают одинаковый результат при каждом запуске. Они не заменяют тестирование вывода на модели, а стоят перед ним и отсеивают ошибки, для поиска которых модель не нужна. Тестирование на моделях есть в планах и сейчас недоступно.

Практический пример

Регрессия, пойманная compare

Две версии одного промпта, сравнённые движком при сборке этой страницы. Правка выглядела безобидной, но убрала формат вывода. Результаты проверки и сгенерированные промпты показаны на английском — так, как их возвращают движок и API.

Версия 1

100/100 · 46 токенов
Summarize the incident report below for the on-call engineering team in 5 bullet points. Include the root cause, the customer impact, and the fix. Return a markdown list.

<report>
{{report}}
</report>

Версия 2

84/100 · 36 токенов
Summarize the incident report below for the on-call engineering team. Include the root cause, the customer impact, the fix, and some other details if relevant.

{{report}}
Качество
-16
Токены
-10
Новые проблемы
3
  • предупреждениеTemplate variable not delimited: {{report}}.
  • инфоNo output format is specified.
  • инфоNo length limit for generated content.

Рассчитано движком при сборке этой страницы. С конфигурацией ниже версия 2 проходит проверку при минимальной оценке 70.

.promptflowrc.json
{
  "include": ["prompts/**/*.md"],
  "model": "gpt-4.1",
  "minScore": 70,
  "maxTokens": 2000,
  "failOn": "critical"
}
shell
promptflow check
promptflow compare prompts/summary.v1.md prompts/summary.v2.md

Главные преимущества

Возможности

Для кого

Сценарии использования

Частые вопросы

Запускает ли тестирование мои промпты на модели?

Нет. Проверки статические: они анализируют текст промпта детерминированными правилами. Запуск промптов на модели и оценка вывода есть в планах и сейчас недоступны.

Есть ли CLI в npm?

Пока нет. До публикации пакета собирайте CLI из клона репозитория. Команды описаны в документации CLI.

Какие файлы можно проверять?

Любые текстовые. Укажите в include glob-шаблоны файлов с вашими промптами, например Markdown или .prompt.txt.

Можно ли игнорировать правило?

Да. Перечислите коды правил в ignore в .promptflowrc.json, чтобы пропускать их во всём репозитории.

Все продукты работают на одном движке, поэтому сочетаются без сюрпризов.

Техника, лежащая в основе

Руководства из базы знаний по промпт-инжинирингу, объясняющие идеи, которые применяет этот продукт.

Попробуйте на своём промпте.

Бесплатно, детерминированно и приватно. Без регистрации.