← retour aux outils back to tools

# 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