Retour aux articles • IA • • 3 min de lecture

Promptfoo : tester ses prompts en CI/CD

Industrialiser les tests de non-régression (TDD) et les campagnes de Red-Teaming OWASP LLM Top 10 sur les prompts et agents IA avec Promptfoo.

Promptfoo : tester ses prompts en CI/CD

Modifier un prompt système, changer de modèle (GPT vers Claude ou Gemini) ou ajouter un outil MCP sans banc d’évaluation automatisé équivaut à déployer du code en production sans test unitaire. Un ajustement qui corrige un cas particulier dégrade souvent silencieusement le formatage JSON ou ouvre une brèche d’injection indirecte.

Promptfoo (promptfoo/promptfoo) apporte une approche TDD (Test-Driven Development) et AppSec Red-Teaming déterministe, exécutable localement en CLI ou dans un pipeline CI/CD GitLab/GitHub Actions.


Tester ses prompts comme du code

Le fonctionnement repose sur une spécification YAML (promptfooconfig.yaml) qui croise des variantes de prompts, plusieurs modèles cibles et une batterie d’assertions strictes :

Architecture & Flux : Promptfoo : TDD et Red-Teaming CI/CD des L

Deux volets sont particulièrement critiques pour les agents dotés d’outils :

  1. Assertions déterministes sans LLM-as-a-Judge obligatoire : validation de schémas JSON (is-json), vérification de l’absence de termes bannis (not-icontains), contrôle du coût plafond par requête (cost < 0.01) et de la latence (latency < 3000).
  2. Red-Teaming automatisé (promptfoo redteam) : génération automatique d’attaques adverses alignées sur le référentiel OWASP LLM Top 10 (injections indirectes via contenu web/email, contournement de RBAC, exfiltration de variables d’environnement, appels d’outils non autorisés).

Automatiser les tests en pre-commit

# Lancer la matrice d'évaluation comparative en local (cache activé)
npx promptfoo@latest eval -c promptfooconfig.yaml --no-progress-bar

# Exécuter une campagne d'audit Red-Team automatisée (injections & fuites PII)
npx promptfoo@latest redteam run --config redteam.yaml

# Exporter un rapport de conformité JSON avec code retour non-zéro si échec
npx promptfoo@latest eval --output results.json --fail-on-error
Animation exécution CLI dans le terminal

–> En couplant promptfoo eval aux tests canaries du dépôt, toute dérive de routage d’intention ou tentative d’exfiltration de données est bloquée avant même le déploiement du conteneur.


Caractéristiques

Capacité d’AuditTests Manuels Ad-hocScripts pytest SimplesPromptfoo (eval + redteam)
Comparaison multi-modèles côte à côte❌ Fastidieux⚠️ Code boilerplate lourd✅ Matrice YAML déclarative native
Validation JSON Schema & Regex❌ Visuel✅ Oui✅ Assertions intégrées sans code
Audit OWASP LLM Top 10 (Jailbreak/PII)❌ Incomplet❌ Manuel✅ Générateur Red-Team automatisé
Contrôle des seuils de latence et coût ($)❌ Absent⚠️ Complexe à maintenir✅ Seuils cost et latency natifs
Exécution 100 % locale (Zero-Cloud)✅ Oui✅ Oui✅ Exécution CLI locale sans télémétrie
CommandeDescription
`npx promptfoo@latest init`
Initialise un fichier promptfooconfig.yaml avec des exemples d'assertions.
`npx promptfoo@latest eval --no-cache`
Force la ré-exécution complète de tous les cas de test sans utiliser le cache local.
`npx promptfoo@latest redteam init`
Génère une configuration d'audit de sécurité ciblant les plugins OWASP (SSRF, SQLi, RBAC, PII).
`npx promptfoo@latest view`
Ouvre l'interface locale d'inspection des résultats et des matrices de régression.