Aller au contenu
Cercle IA Tech · Évaluation Un site du réseau Cercle IA Tech

Guide

Comparer deux modèles d'IA à l'aveugle : la méthode

Comparer deux LLM ou deux prompts à l'aveugle sur vos questions : relecteurs, juge avec inversion d'ordre, puis test A/B.

Mis à jour le

Pour comparer deux modèles d'IA (ou deux versions de vos consignes) sans vous laisser influencer, faites-leur répondre aux mêmes questions, présentez les deux réponses anonymes et dans un ordre tiré au hasard, et demandez laquelle est meilleure, à des relecteurs du métier ou à un juge automatique. Inversez l'ordre pour le juge automatique, comptez les victoires, et ne passez au test A/B en production qu'une fois ce premier tri fait.

Pourquoi la comparaison par paires

Quand la question est « laquelle garder ? », le plus direct est de mettre les deux réponses côte à côte plutôt que de noter chacune sur 5 et de comparer des moyennes. C'est l'un des trois modes de jugement étudiés par Zheng et al. (2023) : le juge reçoit une question et deux réponses, et désigne la meilleure ou déclare une égalité. Le même principe fait tourner les comparateurs publics comme compar:IA, décrit sur le comparateur du ministère de la Culture ; la différence, ici, est que les questions sont les vôtres.

Étape 1 : préparer les paires

  1. Prenez votre jeu de test et faites répondre les deux versions à chaque question, avec les mêmes documents et les mêmes réglages.
  2. Retirez de chaque réponse tout ce qui trahit son origine (signature, mise en forme propre à un modèle).
  3. Pour chaque question, tirez au hasard laquelle des deux réponses sera « A » et laquelle sera « B », et gardez la correspondance dans un fichier à part.
import random

def preparer_paire(question, reponse_v1, reponse_v2):
    paire = [("v1", reponse_v1), ("v2", reponse_v2)]
    random.shuffle(paire)
    vue_relecteur = {"question": question, "A": paire[0][1], "B": paire[1][1]}
    cle = {"A": paire[0][0], "B": paire[1][0]}
    return vue_relecteur, cle

Le relecteur ne voit que vue_relecteur ; cle sert au dépouillement.

Étape 2 : faire juger

Par des relecteurs. Une consigne courte : « Laquelle des deux réponses donneriez-vous à ce client ? A, B ou égalité, et pourquoi en une phrase. » Utilisez la même grille de relecture que pour vos autres évaluations, pour que « meilleure » veuille dire la même chose pour tous.

Par un juge automatique. L'article de Zheng et al. mesure un biais de position : le juge a tendance à préférer une place plutôt que le contenu. La parade décrite : appeler le juge deux fois, avec les réponses dans un ordre puis dans l'autre, et ne compter une victoire que si la même réponse gagne les deux fois ; sinon, c'est une égalité. Méfiez-vous aussi du biais de verbosité : à contenu égal, le juge préfère la réponse la plus longue. Si une version répond systématiquement plus long, vérifiez à la main un échantillon de ses victoires.

Avec promptfoo, déclarer deux modèles dans providers fait passer chaque question aux deux, et le tableau de résultats les montre côte à côte ; l'assertion select-best demande à un modèle de désigner la meilleure sortie :

providers:
  - anthropic:messages:claude-sonnet-5
  - anthropic:messages:claude-opus-5-5

Étape 3 : dépouiller

Comptez, sur l'ensemble des questions, les victoires de chaque version et les égalités. Puis lisez par catégorie de questions : une version peut gagner sur les questions simples et perdre sur celles qui demandent de dire « je ne sais pas ». Rapprochez enfin le résultat du coût et du délai de chaque version : une victoire courte payée deux fois plus cher n'est pas forcément un bon choix (voir coût d'une évaluation pour le calcul).

Étape 4 : le test A/B en production

Une fois le choix resserré, vous pouvez servir chaque version à une partie de vos utilisateurs réels et comparer leurs retours. L'article d'Anthropic sur l'évaluation des agents reconnaît l'intérêt de cette méthode (le comportement réel, à grande échelle) mais la décrit comme lente : des jours ou des semaines pour obtenir un résultat significatif. Elle complète la comparaison sur jeu de test, elle ne la remplace pas. Voir évaluer en production.

Dans une plateforme

Certaines plateformes intègrent la comparaison à l'aveugle. ALMA, par exemple, présente dans ses fonctionnalités une « Arena LLM » qui compare les réponses de plusieurs modèles « en blind-test » ; sa disponibilité selon le forfait est indiquée sur la page des tarifs. Qu'elle soit faite dans un outil ou à la main, la comparaison ne vaut que par les questions qu'on lui donne : les vôtres, pas celles d'un classement public.

Questions fréquentes

Pourquoi comparer à l'aveugle ?

Parce que connaître le nom du modèle influence la note. Le relecteur, comme le juge automatique, doit voir deux réponses anonymes, dans un ordre tiré au hasard.

Un test A/B en production suffit-il ?

Il mesure le comportement réel des utilisateurs, mais l'article d'Anthropic sur l'évaluation des agents le décrit comme lent : des jours ou des semaines pour obtenir un résultat significatif. On le fait après une comparaison sur un jeu de test, pas à la place.

Sources

Pages consultées pour écrire cet article :

  1. https://arxiv.org/abs/2306.05685
  2. https://arxiv.org/html/2306.05685v4
  3. https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
  4. https://www.promptfoo.dev/docs/configuration/expected-outputs/
  5. https://www.promptfoo.dev/docs/providers/anthropic/
  6. https://alma.iarche.fr/fr/features

À lire aussi