Promptfoo – Fini le doigt mouillé pour tester vos LLM
Si vous utilisez des LLM dans vos projets, vous savez que le plus flippant c’est pas de les faire fonctionner (quoique..lol) mais c’est de vérifier qu’ils ne disent pas n’importe nawak ! Et pour cela, il y a
Promptfoo
, un outil CLI open source qui permet de tester vos prompts, comparer les modèles et scanner les vulnérabilités de vos apps IA, le tout avec un simple fichier YAML.
Ça s’installe en une commande (npx promptfoo@latest init) et vous voilà avec un fichier promptfooconfig.yaml où vous définissez vos prompts, les modèles à tester et les assertions à vérifier.
Genre, vous voulez que votre traduction contienne bien “Bonjour le monde“, Hop, un petit tour dans le YAML, assertion contains, et c’est terminé. Plus besoin de relire 200 outputs à la main en plissant les yeux ! Par contre, attention : le YAML peut vite devenir un plat de spaghetti si vous testez 15 prompts sur 8 modèles en parallèle. Commencez donc petit.
La matrice d’évaluation de promptfoo, sobre mais efficace
L’outil supporte plus de 60 providers différents comme OpenAI, Claude, Gemini, Llama via Ollama, Mistral… vous mettez tout ça dans le même fichier de config et promptfoo les fait tourner côte à côte. Vous voyez alors directement lequel hallucine le moins, lequel répond le plus vite, lequel coûte une blinde pour un résultat bof bof. Le tout avec des assertions typées : contains, llm-rubric (où un autre LLM note la réponse), javascript pour vos critères custom, et même cost et latency pour garder un oeil sur la facture.
Après tester si votre chatbot traduit correctement, c’est sympa, mais vérifier qu’il se fait pas jailbreaker par un “ignore toutes tes instructions“, c’est quand même plus critique ! Et c’est pourquoi Promptfoo embarque un scanner de vulnérabilités qui couvre plus de 50 types d’attaques : injections de prompts directes et indirectes, fuites de données personnelles, biais, contenu toxique, escalade de privilèges sur les outils…
Il utilise pour cela des techniques comme le Tree of Attacks with Pruning, un algo qui explore plusieurs chemins d’attaque en parallèle pour trouver les failles sans brute force. Si vous voulez creuser le sujet du red teaming LLM,
DeepTeam
est un bon complément côté Python.

Le dashboard red teaming de promptfoo avec les vulnérabilités détectées
C’est surtout cette intégration CI/CD qui fait la différence. Vous pouvez brancher promptfoo dans votre pipeline GitHub Actions ou GitLab et chaque pull request qui touche un prompt est automatiquement testée. Bah oui, on a des tests unitaires pour le code depuis 30 ans, mais pour les prompts, jusqu’ici c’est même plutôt le far west !
Bon après, faut pas se mentir non plus, écrire des assertions pour du texte non-déterministe, c’est un autre sport que du assertEqual. Le llm-rubric qui utilise un LLM pour juger un autre LLM, c’est pas con mais ça ajoute aussi une couche de “flou” donc à vous de trouver le bon dosage dans vos tests.
L’équipe a annoncé rejoindre OpenAI début mars ce qui est plutôt une bonne nouvelle pour le développement du projet… mais pas forcément pour l’indépendance quand on évalue les modèles OpenAI avec un outil OpenAI (on verra bien hein ^^ lol).
L’orchestration tourne en local sur votre machine (les prompts partent chez les providers pour l’évaluation, mais vos fichiers YAML, vos logs et résultats JSON restent sur votre disque dur), c’est sous licence MIT, et y’a déjà plus de 300 000 utilisateurs, ce qui est quand même pas mal !
Voilà, comme ça plutôt que de croiser les doigts à chaque déploiement, en espérant ne pas vous faire virer, autant tester ses prompts comme on teste son code.

Leave a Comment