On ne peut pas assertEqual un LLM
Le même prompt renvoie des mots différents à chaque exécution. Chaque test que vous avez écrit supposait une valeur attendue fixe. Cette hypothèse a disparu — et ce qui la remplace est toute la compétence.
Testez la propriété, pas la chaîne
Vous ne pouvez pas affirmer que la sortie égale une phrase de référence. Vous pouvez affirmer ses propriétés : cite-t-elle une source, fait-elle moins de 200 mots, refuse-t-elle la question hors-sujet, contient-elle le numéro de compte du contexte. Chaque propriété est une vérification qui survit au changement de formulation.
▸ The shift, in one comparison
# impossible — the model never says it the same way twice
assert answer == "Your balance is $412."
# testable — properties that hold however it's phrased
assert "412" in answer # the fact is present
assert len(answer.split()) < 60 # it stayed concise
assert judge(answer, "states the balance") # a rubric checkLes trois façons de noter
- Règles — regex, contient, longueur, JSON valide. Pas chères, déterministes, attrapent l'évident. Commencez ici.
- Embeddings — la réponse est-elle sémantiquement proche d'une référence ? Attrape la paraphrase que les règles ratent.
- LLM-juge — un second modèle note contre une grille. Puissant, et avec ses propres modes d'échec (leçon 4).
Basé sur les pratiques publiées d'évaluation des LLM et de test non-déterministe