Il s’agit d’un notebook interactif. Vous pouvez l’exécuter en local ou utiliser les liens ci-dessous :
Prérequis
Avant de commencer, installez et importez les bibliothèques requises, obtenez votre clé API W&B et initialisez votre projet Weave. Cette étape garantit que votre environnement peut s’authentifier auprès de W&B et enregistrer des traces dans votre projet Weave.Créez des prompts et itérez dessus avec Weave
Une bonne ingénierie de prompts est essentielle pour guider le modèle afin qu’il extraie correctement les Entities. Dans cette section, vous rédigez un prompt initial, le publiez dans Weave pour pouvoir suivre ses modifications au fil du temps, puis l’affinez à l’aide de règles de validation plus strictes. Commencez par créer un prompt de base qui indique au modèle quoi extraire des données d’image et comment le formater. Ensuite, enregistrez le prompt dans Weave pour en assurer le suivi et faciliter l’itération.Obtenir le jeu de données
Une fois le prompt défini, vous avez besoin de données d’entrée pour alimenter le pipeline. Récupérez le jeu de données de notes manuscrites qui sert d’entrée au pipeline d’OCR. Les images du jeu de données sont déjà encodées enbase64, ce qui signifie que le LLM peut utiliser les données sans aucun prétraitement.
Créer le pipeline NER
Maintenant que vous disposez d’un prompt et d’un jeu de données, créez le pipeline NER qui les relie au VLM. Le pipeline se compose de deux fonctions :- Une fonction
encode_imagequi prend une image PIL du jeu de données et renvoie une représentation de l’image encodée enbase64, pouvant être transmise au VLM. - Une fonction
extract_named_entities_from_imagequi prend une image et un prompt système, puis renvoie les entités extraites de cette image, telles que décrites par le prompt système.
named_entity_recognation qui :
- Envoie les données d’image au pipeline NER.
- Renvoie un JSON correctement formaté avec les résultats.
@weave.op() pour suivre et tracer automatiquement l’exécution de la fonction dans l’interface utilisateur de W&B.
Chaque fois que named_entity_recognation s’exécute, les résultats complets de la trace sont visibles dans l’interface Weave. Pour afficher les traces, accédez à l’onglet Traces de votre projet Weave.
processing_results.json. Les résultats sont également consultables dans l’interface Weave.

Évaluer le pipeline avec Weave
Maintenant que vous avez créé un pipeline pour effectuer de la NER à l’aide d’un VLM, vous pouvez utiliser Weave pour l’évaluer de façon systématique et voir dans quelle mesure il est performant. Évaluer le pipeline vous permet de mesurer la qualité de l’extraction sur l’ensemble du jeu de données plutôt que de vous appuyer sur des vérifications ponctuelles. Pour plus d’informations sur les évaluations dans Weave, consultez Aperçu des évaluations. Un évaluateur constitue un élément fondamental d’une évaluation dans Weave. Les évaluateurs servent à évaluer les sorties de l’IA et à renvoyer des métriques d’évaluation. Ils prennent la sortie de l’IA, l’analysent et renvoient un dictionnaire de résultats. Les évaluateurs peuvent utiliser vos données d’entrée comme référence si nécessaire et peuvent également renvoyer des informations supplémentaires, comme des explications ou le raisonnement issu de l’évaluation. Dans cette section, vous créez deux évaluateurs pour évaluer le pipeline :- Évaluateur programmatique.
- Scorer LLM-as-a-judge.
Évaluateur programmatique
Le premier évaluateur est une vérification déterministe qui s’exécute sans LLM. L’évaluateur programmatique,check_for_missing_fields_programatically, prend la sortie du modèle (la sortie de la fonction named_entity_recognition) et identifie les clés manquantes ou vides dans les résultats.
Cette vérification est utile pour repérer les échantillons pour lesquels le modèle n’a extrait aucun champ.
Évaluateur LLM-as-a-judge
Comme l’évaluateur programmatique ne détecte que les champs manquants ou vides, vous avez besoin d’un second évaluateur pour vérifier si les valeurs extraites correspondent bien à ce qui apparaît dans l’image. À cette étape de l’évaluation, vous fournissez à la fois les données de l’image et la sortie du modèle afin de garantir que l’évaluation reflète les performances réelles du système de NER. Le contenu de l’image est référencé explicitement, et pas seulement la sortie du modèle. L’évaluateur utilisé pour cette étape,check_for_missing_fields_with_llm, utilise un LLM pour effectuer le scoring (plus précisément le modèle gpt-4o d’OpenAI). Comme l’indique le contenu de eval_prompt, check_for_missing_fields_with_llm produit une valeur Boolean. Si tous les champs correspondent aux informations de l’image et que le formatage est correct, l’évaluateur renvoie true. Si un champ est manquant, vide, incorrect ou ne correspond pas, le résultat est false, et l’évaluateur renvoie également un message expliquant le problème.
Lancer l’évaluation
Une fois les deux évaluateurs définis, vous pouvez maintenant lancer l’évaluation. Définissez un appel d’évaluation qui parcourt automatiquement ledataset transmis et enregistre les résultats dans l’interface Weave.
Le code suivant lance l’évaluation et applique les deux évaluateurs à chaque sortie du pipeline NER. Les résultats sont visibles dans l’onglet Evals de l’interface Weave.
