Интеграция Promptfoo для автоматического тестирования промптов

Вы обновили промпт для поддержки нового формата ответа, а через неделю модель начала галлюцинировать на простых запросах — точность упала на 30%. Каждое изменение промпта может незаметно сломать сценарии, которые работали годами. В одном проекте изменение одного слова в промпте снизило точность на 3

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Вы обновили промпт для поддержки нового формата ответа, а через неделю модель начала галлюцинировать на простых запросах — точность упала на 30%. Каждое изменение промпта может незаметно сломать сценарии, которые работали годами. В одном проекте изменение одного слова в промпте снизило точность на 30% и потребовало недели ручного тестирования, чтобы отловить регрессию. Мы используем Promptfoo, чтобы за пару дней построить автоматическое регрессионное тестирование и навсегда забыть о таких сюрпризах. Promptfoo позволяет выполнять тестирование в 5 раз быстрее ручного и даёт объективные метрики, такие как LLM-rubric, ROUGE-N и contains-any, вместо субъективной оценки. Это открытое CLI-приложение с десятками типов assert'ов, которое интегрируется в любой CI/CD-пайплайн.

Наши инженеры выполнили 40+ проектов по интеграции LLM, и во всех случаях использование Promptfoo сократило время на выявление регрессий с недели до нескольких минут. Мы настраиваем тесты под конкретные сценарии: проверяем наличие обязательных фраз, отсутствие запрещённых слов, сравниваем ответы моделей и измеряем сходство с эталоном через эмбеддинги. В результате вы получаете прозрачный процесс, где каждый PR проверяется автоматически, а качество промптов контролируется метриками.

Какие проблемы решаем

  • Регрессии после изменений промпта: новое условие может нарушить работу на других кейсах. Promptfoo прогоняет сотни тестов за секунды.
  • Нестабильность моделей: поставщик обновил модель, и она начала выдавать другой формат. Тесты ловят это до деплоя.
  • Субъективная оценка: вместо «кажется, отвечает хорошо» — объективные метрики (contains, LLM-rubric, ROUGE).
  • Отсутствие CI/CD для промптов: разработку ведут без контроля качества — это как коммитить без юнит-тестов.
  • RAG-сценарии: проверка корректности извлечения и релевантности ответа на основе векторного поиска.
  • QA для AI: гарантия, что модель не выдаёт некорректные или unsafe ответы в production.

Почему регрессионное тестирование промптов критично?

LLM — вероятностные системы. Одно слово в промпте может изменить всю семантику ответа. Без автоматических тестов вы выпускаете изменения вслепую. Promptfoo даёт гарантию, что старые сценарии продолжают работать, а новые не ломают существующую логику. Это особенно важно в production-системах с тысячами запросов в день. Согласно официальной документации, Promptfoo is an open-source tool for evaluating and testing LLM prompts. Он зарекомендовал себя в проектах с объёмом до 10 тысяч запросов в сутки.

Как мы настраиваем Promptfoo под ваши задачи?

Мы начинаем с аудита текущих промптов: собираем все используемые шаблоны, выделяем ключевые сценарии и пишем тест-кейсы с expect'ами. Типичный конфиг выглядит так:

providers: - openai:gpt-4o - openai:gpt-4o-mini - anthropic:claude-3-5-sonnet-20241022 prompts: - "Summarize the following text in 3 sentences: {{text}}" - "Create a concise 3-sentence summary of: {{text}}" tests: - vars: text: "Long article about machine learning..." assert: - type: contains value: "machine learning" - type: llm-rubric value: "The summary is accurate and covers the main points" - type: javascript value: "output.split('.').length >= 3" - vars: text: "Another test document..." assert: - type: not-contains value: "I cannot" - type: rouge-n value: reference_summary threshold: 0.5 

Мы используем не все assert'ы подряд, а только те, что реально нужны. Часто добавляем кастомные проверки через JavaScript: например, что ответ содержит ровно 3 пункта в markdown. Это даёт 100% уверенность в формате вывода.

Как интегрировать Promptfoo в CI/CD?

Достаточно добавить одну команду в ваш workflow:

promptfoo eval --ci 

GitHub Actions пример:

- name: Run prompt tests run: npx promptfoo eval --ci 

Если тест падает, CI завершается с ошибкой — PR не мержится. Мы также настраиваем автоматический просмотр отчёта через promptfoo view, чтобы команда видела дифф между версиями промптов.

Что входит в работу

  • Аудит текущих промптов и выделение критичных сценариев.
  • Написание 10–50 тест-кейсов с assert'ами под ваши метрики.
  • Конфигурация Promptfoo и настройка провайдеров.
  • Интеграция в CI/CD (GitHub Actions, GitLab CI) с уведомлениями.
  • Документация и обучение команды: как добавлять новые тесты и интерпретировать результаты.

Процесс работы

  1. Анализ промптов — собираем текущие шаблоны, выявляем критичные кейсы (до 2 часов).
  2. Проектирование тестов — пишем 10–50 тест-кейсов с assert'ами под ваши метрики.
  3. Реализация — создаём конфигурацию Promptfoo, настраиваем провайдеров и переменные.
  4. Тестирование — запускаем eval, фиксим упавшие тесты, уточняем требования.
  5. Деплой в CI/CD — добавляем шаг в пайплайн, настраиваем уведомления.

Сроки

Работы занимают от 3 до 7 дней в зависимости от количества промптов и сложности assert'ов. Стоимость рассчитывается индивидуально после аудита. Получите бесплатную консультацию — оценим ваш проект за один день.

Чек-лист: что проверить в тестах промптов

Тип проверки Что ловит Пример assert
contains Наличие обязательной фразы contains: "Hello"
not-contains Запрещённые слова (отказы, инвективы) not-contains: "I cannot"
llm-rubric Качество ответа (субъективная оценка LLM) llm-rubric: "Informative"
javascript Произвольные проверки (длина, формат, JSON) output.length > 0
rouge-n Сходство с эталоном (для суммаризации) threshold: 0.5
contains-any Хотя бы один из вариантов contains-any: ["good","bad"]

Сравнение Promptfoo с ручным тестированием

Критерий Ручное тестирование Promptfoo автоматизация
Время на один прогон 1–2 часа на 10 кейсов 2–5 минут на 100 кейсов
Точность Субъективная оценка Объективные метрики и assert'ы
Масштабируемость Ограничено человеческими ресурсами Запуск на сотни тестов в CI
CI/CD интеграция Требует ручного запуска Автоматически на каждый коммит
Пример Python-скрипта для кастомной проверки
import promptfoo results = promptfoo.evaluate({ "prompts": ["Classify sentiment: {{text}}"], "providers": ["openai:gpt-4o-mini"], "tests": [ { "vars": {"text": "Great product!"}, "assert": [{"type": "contains", "value": "positive"}] } ] }) print(f"Pass rate: {results.stats.successes}/{results.stats.total}") 

Наши инженеры с 5+ летним опытом в AI/ML выполнили 40+ проектов по интеграции LLM. Мы гарантируем, что тестовое покрытие будет поддерживаться и расширяться под ваши задачи. Promptfoo — не единственный инструмент в стеке, но для регрессионного тестирования промптов он наиболее гибок и прост в интеграции.

Закажите консультацию — мы покажем, как Promptfoo встраивается в ваш существующий workflow, и оценим объём работы за один день. Подход «под ключ»: от тест-кейсов до CI/CD, с документацией и обучением команды. Получите бесплатный аудит промптов — свяжитесь с нами!