Lorsque vous créez des requêtes pour des applications réelles, un compromis clé se présente : trouver le juste équilibre entre concision et efficacité. Lorsque tous les facteurs sont égaux, un prompt concis est plus rapide, moins cher et plus facile à gérer qu'un prompt plus long. Cela est particulièrement pertinent dans les environnements Web où la latence et les limites de jetons sont importantes. Toutefois, si votre requête est trop minimaliste, le modèle peut manquer de contexte, d'instructions ou d'exemples pour produire des résultats de haute qualité.
Le développement axé sur l'évaluation (EDD, Evaluation-Driven Development) vous permet de surveiller et d'optimiser systématiquement ce compromis. Il offre un processus reproductible et testable pour améliorer les résultats par petites étapes sûres, détecter les régressions et aligner le comportement du modèle sur les attentes des utilisateurs et du produit au fil du temps.
Considérez-le comme un développement piloté par les tests, adapté à l'incertitude de l'IA. Contrairement aux tests unitaires déterministes, les évaluations de l'IA ne peuvent pas être codées en dur, car les résultats, qu'ils soient bien formés ou non, peuvent prendre des formes inattendues.
L'EDD vous aide également dans vos efforts de découverte. Tout comme l'écriture de tests permet de clarifier le comportement d'une fonctionnalité, la définition de critères d'évaluation et l'examen des résultats du modèle vous obligent à faire face au manque de clarté et à ajouter progressivement plus de détails et de structure aux tâches ouvertes ou inconnues.
Définir le problème
Vous pouvez formuler votre problème comme un contrat d'API, en incluant le type d'entrée, le format de sortie et toute contrainte supplémentaire. Exemple :
- Type d'entrée : brouillon d'article de blog
- Format de sortie : tableau JSON avec trois titres de posts
- Contraintes : moins de 128 caractères, ton amical
Ensuite, collectez des exemples d'entrées. Pour garantir la diversité des données, vous incluez à la fois des exemples idéaux et des entrées réelles et désordonnées. Pensez aux variantes et aux cas extrêmes, comme les posts avec des emoji, une structure imbriquée et de nombreux extraits de code.
Initialiser une référence
Rédigez votre première requête. Vous pouvez commencer par le zero-shot et inclure :
- Instructions claires
- Format de sortie
- Espace réservé pour la variable d'entrée
Vous augmentez la complexité et travaillez avec d'autres composants et techniques de prompting avancées lorsque vous évaluez et optimisez. Tout d'abord, nous devons configurer un système d'évaluation pour orienter l'effort d'optimisation dans la bonne direction.
Créer votre système d'évaluation
Dans le développement piloté par les tests, vous commencez à écrire des tests une fois que vous connaissez les exigences. Avec l'IA générative, il n'existe pas de résultats définitifs à tester. Vous devez donc redoubler d'efforts pour créer votre boucle d'évaluation.
Vous aurez probablement besoin de plusieurs outils de mesure pour évaluer efficacement vos résultats.
Définir vos métriques d'évaluation
Les métriques d'évaluation peuvent être déterministes. Par exemple, vous pouvez vérifier si le modèle renvoie un code JSON valide ou génère le bon nombre d'éléments.
Toutefois, vous devriez consacrer une grande partie de votre temps à identifier et à affiner les métriques subjectives ou qualitatives, telles que la clarté, l'utilité, le ton ou la créativité. Vous pouvez commencer par des objectifs généraux, mais vous rencontrerez rapidement des problèmes plus nuancés.
Par exemple, supposons que votre générateur de titres utilise trop souvent certaines expressions ou certains schémas, ce qui donne des résultats répétitifs et robotiques. Dans ce cas, vous définissez de nouvelles métriques pour encourager la variation et décourager les structures ou les mots clés trop utilisés. Au fil du temps, vos métriques clés se stabiliseront et vous pourrez suivre vos progrès.
Ce processus peut bénéficier de l'aide d'experts qui comprennent ce qui est bien dans le domaine de votre application et qui peuvent identifier les modes de défaillance subtils. Par exemple, si vous développez un assistant de rédaction, faites équipe avec un producteur de contenu ou un éditeur pour vous assurer que votre évaluation est conforme à leur vision du monde.
Choisir vos juges
Différents critères d'évaluation nécessitent différents évaluateurs :
- Les vérifications basées sur le code fonctionnent bien pour les sorties déterministes ou basées sur des règles. Par exemple, vous pouvez analyser les titres pour y détecter les mots à éviter, vérifier le nombre de caractères ou valider la structure JSON. Elles sont rapides, répétables et parfaites pour les éléments d'UI à sortie fixe, tels que les boutons ou les champs de formulaire.
- Les commentaires humains sont essentiels pour évaluer des qualités plus subjectives, comme le ton, la clarté ou l'utilité. Surtout au début, l'examen des résultats du modèle par vous-même (ou avec des experts du domaine) permet une itération rapide. Toutefois, cette approche n'est pas très évolutive. Une fois votre application lancée, vous pouvez également collecter des signaux dans l'application, comme une note en étoiles, mais ils ont tendance à être bruyants et manquent de la nuance nécessaire pour une optimisation précise.
- LLM-as-judge offre un moyen évolutif d'évaluer des critères subjectifs en utilisant un autre modèle d'IA pour noter ou critiquer les résultats. Elle est plus rapide que la révision humaine, mais n'est pas sans écueils : dans une implémentation naïve, elle peut perpétuer et même renforcer les biais et les lacunes du modèle en termes de connaissances.
Privilégiez la qualité à la quantité. Dans le machine learning classique et l'IA prédictive, il est courant de faire appel au crowdsourcing pour annoter les données. Pour l'IA générative, les annotateurs crowdsourcés manquent souvent de contexte de domaine. Une évaluation de haute qualité et riche en contexte est plus importante que l'échelle.
Évaluer et optimiser
Plus vous pourrez tester et affiner rapidement vos requêtes, plus vite vous obtiendrez un résultat qui correspond aux attentes des utilisateurs. Vous devez prendre l'habitude d'optimiser en continu. Essayez une amélioration, évaluez-la, puis essayez autre chose.
Une fois en production, continuez à observer et à évaluer le comportement de vos utilisateurs et de votre système d'IA. Ensuite, analysez et transformez ces données en étapes d'optimisation.
Automatiser votre pipeline d'évaluation
Pour réduire les frictions dans vos efforts d'optimisation, vous avez besoin d'une infrastructure opérationnelle qui automatise l'évaluation, suit les modifications et relie le développement à la production. C'est ce qu'on appelle communément LLMOps. Bien qu'il existe des plates-formes qui peuvent vous aider à automatiser vos tâches, vous devez concevoir votre workflow idéal avant de vous engager avec une solution tierce.
Voici quelques composants clés à prendre en compte :
- Gestion des versions : stockez les requêtes, les métriques d'évaluation et les entrées de test dans le contrôle des versions. Traitez-les comme du code pour garantir la reproductibilité et un historique des modifications clair.
- Évaluations par lot automatisées : utilisez des workflows (tels que GitHub Actions) pour exécuter des évaluations à chaque mise à jour d'invite et générer des rapports comparatifs.
- CI/CD pour les requêtes : contrôlez les déploiements avec des vérifications automatisées, telles que des tests déterministes, des scores LLM-as-judge ou des garde-fous, et bloquez les fusions lorsque la qualité se dégrade.
- Journalisation et observabilité de la production : capturez les entrées, les sorties, les erreurs, la latence et l'utilisation des jetons. Surveillez la dérive, les schémas inattendus ou les pics d'échecs.
- Ingestion des commentaires : collectez les signaux utilisateur (pouces, réécritures, abandon) et transformez les problèmes récurrents en nouveaux cas de test.
- Suivi des tests : suivez les versions de prompts, les configurations de modèles et les résultats d'évaluation.
Effectuer des itérations avec des modifications ciblées et de petite envergure
Le raffinement des requêtes commence généralement par l'amélioration du langage de votre requête. Cela peut signifier rendre les instructions plus spécifiques, clarifier l'intention ou supprimer les ambiguïtés.
Veillez à ne pas surajuster le modèle. Une erreur courante consiste à ajouter des règles trop strictes pour corriger les problèmes liés au modèle. Par exemple, si votre générateur de titres produit sans cesse des titres commençant par Le guide ultime, vous pourriez être tenté d'interdire explicitement cette expression. Abstrayez plutôt le problème et ajustez l'instruction de niveau supérieur. Cela peut signifier que vous mettez l'accent sur l'originalité, la variété ou un style éditorial spécifique. Le modèle apprend ainsi la préférence sous-jacente plutôt qu'une seule exception.
Une autre piste consiste à tester davantage de techniques d'incitation et à combiner ces efforts. Lorsque vous choisissez une technique, posez-vous la question suivante : cette tâche est-elle mieux résolue par analogie (few-shot), par un raisonnement étape par étape (chain-of-thought) ou par un affinement itératif (self-reflection) ?
Lorsque votre système passe en production, votre flywheel EDD ne doit pas ralentir. Au contraire, elle devrait s'accélérer. Si votre système traite et enregistre les saisies des utilisateurs, elles devraient devenir votre source d'informations la plus précieuse. Ajoutez des modèles récurrents à votre suite d'évaluation, et identifiez et implémentez en permanence les meilleures étapes d'optimisation suivantes.
Vos points à retenir
Le développement de requêtes axé sur l'évaluation vous offre une approche structurée pour gérer l'incertitude de l'IA. En définissant clairement votre problème, en créant un système d'évaluation personnalisé et en apportant des améliorations ciblées, vous créez une boucle de rétroaction qui améliore progressivement les sorties du modèle.
Ressources
Voici quelques lectures recommandées si vous souhaitez implémenter LLM-as-judge :
- Comparer les capacités des LLM avec la synthèse
- Consultez le guide de Hamel Husain sur l'utilisation des LLM en tant que juges.
- Lisez l'article A Survey on LLM-as-a-Judge.
Si vous souhaitez améliorer vos requêtes, consultez Développement contextuel. Il est préférable que cette tâche soit effectuée par un ingénieur en machine learning.
Vérifier que vous avez bien compris
Quel est l'objectif principal du développement axé sur l'évaluation ?
Pourquoi utiliser des modèles plus volumineux pour évaluer un système côté client ?
Quel est l'un des pièges potentiels de l'utilisation d'un LLM comme juge pour l'évaluation ?
Quel composant fait partie d'un pipeline d'évaluation automatique recommandé ?
Lorsque vous choisissez des juges pour votre système d'évaluation, quelle est la principale limite de l'utilisation des commentaires humains ?