Promptfoo
CLI open source d'évaluation et de red-teaming de LLM. Cas de test pilotés par YAML plus un mode redteam qui génère automatiquement des prompts adverses contre une application LLM cible. Open-source LLM evaluation and red-teaming CLI. YAML-driven test cases plus a redteam mode that auto-generates adversarial prompts against a target LLM app.
↗ https://github.com/promptfoo/promptfooOverview
Promptfoo is an open-source CLI/library for evaluating and red-teaming LLM applications. Its eval mode runs YAML-defined test matrices across prompts/models for regression testing, while its redteam mode auto-generates adversarial test cases — prompt injection, jailbreaks, PII leakage, harmful content — against a configured target and grades pass/fail with an HTML report. It plugs into CI/CD (GitHub Actions) so red-team regressions get caught before a model/prompt change ships.
Installation
Run without installing (npx)
npx promptfoo@latest init
Or install globally
npm install -g promptfoo
Red-team config
# promptfooconfig.yaml
targets:
- id: openai:chat:<model_name>
label: target-app
redteam:
purpose: "Customer support chatbot for an e-commerce site"
plugins:
- harmful:hate
- pii:direct
- prompt-injection
- jailbreak
strategies:
- jailbreak
- prompt-injection
- base64
Running a red-team scan
Generate adversarial test cases from the config
npx promptfoo redteam generate
Run the generated attacks against the target
npx promptfoo redteam run
Open the interactive HTML report
npx promptfoo redteam report
Targeting a custom HTTP endpoint
targets:
- id: http
label: my-api
config:
url: "<target_url>/chat"
method: POST
headers:
Authorization: "Bearer <api_key>"
body:
message: "{{prompt}}"
transformResponse: "json.reply"
Tips
redteam.purposematters a lot — it steers the LLM-generated attack scenarios to be relevant to your app’s actual context.- Use
--filter-providers/--filter-pluginsto re-run a narrow slice while iterating on a fix instead of the full matrix. - CI integration (
promptfoo redteam run --output results.json) plus a GitHub Action can fail a PR when new jailbreak/injection cases start passing.
Help / Man page
promptfoo <command> [options]
COMMANDS:
init Scaffold a new promptfooconfig.yaml
eval Run standard prompt/model evaluation matrix
view Launch local web UI for eval results
redteam generate Generate adversarial test cases from config
redteam run Execute generated attacks against target(s)
redteam report Open interactive vulnerability report
CONFIG KEYS:
targets Model/provider or custom HTTP endpoint(s)
redteam.purpose App context, steers attack generation
redteam.plugins Vulnerability categories (pii, jailbreak, ...)
redteam.strategies Attack techniques (base64, prompt-injection, ...)
prompts / providers / tests Standard eval-mode fields
OPTIONS:
--config FILE Path to config (default: promptfooconfig.yaml)
--output FILE Write results to file (json/csv/html)
--filter-plugins LIST Limit redteam run to specific plugins
--filter-providers LIST Limit run to specific providers
Vue d’ensemble
Promptfoo est une CLI/bibliothèque open source pour évaluer et red-teamer des applications LLM. Son mode eval exécute des matrices de tests définies en YAML sur des prompts/modèles pour des tests de régression, tandis que son mode redteam génère automatiquement des cas de test adverses (injection de prompt, jailbreaks, fuite de PII, contenu nuisible) contre une cible configurée et note le pass/fail avec un rapport HTML. Il s’intègre dans le CI/CD (GitHub Actions) afin que les régressions de red-team soient détectées avant qu’un changement de modèle/prompt ne soit mis en production.
Installation
# Lancer sans installer (npx)
npx promptfoo@latest init
# Ou installer globalement
npm install -g promptfoo
Configuration red-team
# promptfooconfig.yaml
targets:
- id: openai:chat:<model_name>
label: target-app
redteam:
purpose: "Customer support chatbot for an e-commerce site"
plugins:
- harmful:hate
- pii:direct
- prompt-injection
- jailbreak
strategies:
- jailbreak
- prompt-injection
- base64
Lancer un scan red-team
# Générer des cas de test adverses à partir de la config
npx promptfoo redteam generate
# Lancer les attaques générées contre la cible
npx promptfoo redteam run
# Ouvrir le rapport HTML interactif
npx promptfoo redteam report
Cibler un endpoint HTTP personnalisé
targets:
- id: http
label: my-api
config:
url: "<target_url>/chat"
method: POST
headers:
Authorization: "Bearer <api_key>"
body:
message: "{{prompt}}"
transformResponse: "json.reply"
Conseils
redteam.purposecompte énormément : il oriente les scénarios d’attaque générés par le LLM pour qu’ils restent pertinents par rapport au contexte réel de votre application.- Utilisez
--filter-providers/--filter-pluginspour relancer un sous-ensemble ciblé pendant l’itération sur un correctif, plutôt que la matrice complète. - L’intégration CI (
promptfoo redteam run --output results.json) combinée à une GitHub Action peut faire échouer une PR lorsque de nouveaux cas de jailbreak/injection commencent à passer.
Aide / Page de manuel
promptfoo <command> [options]
COMMANDS:
init Scaffold a new promptfooconfig.yaml
eval Run standard prompt/model evaluation matrix
view Launch local web UI for eval results
redteam generate Generate adversarial test cases from config
redteam run Execute generated attacks against target(s)
redteam report Open interactive vulnerability report
CONFIG KEYS:
targets Model/provider or custom HTTP endpoint(s)
redteam.purpose App context, steers attack generation
redteam.plugins Vulnerability categories (pii, jailbreak, ...)
redteam.strategies Attack techniques (base64, prompt-injection, ...)
prompts / providers / tests Standard eval-mode fields
OPTIONS:
--config FILE Path to config (default: promptfooconfig.yaml)
--output FILE Write results to file (json/csv/html)
--filter-plugins LIST Limit redteam run to specific plugins
--filter-providers LIST Limit run to specific providers