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/promptfoo

Overview

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.purpose matters a lot — it steers the LLM-generated attack scenarios to be relevant to your app’s actual context.
  • Use --filter-providers/--filter-plugins to 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.purpose compte é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-plugins pour 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