HomeExercicesPydantic for LLM Workflows

Pydantic for LLM Workflows

Ces 15 exercices de niveau intermédiaire sont conçus pour plus de pratique. Ces exercices suivent une progression logique, des bases de Pydantic à son application dans des workflows LLM complexes comme le “tool calling”. Ces exercices vous aident à améliorer vos compétences techniques à savoir utiliser Pydantic pour générer des sorties structurées à partir de LLM, en s’assurant que les réponses suivent un format spécifique que votre application peut traiter de manière fiable. Vous apprendrez également les compétences de validation de données pour gérer une grande variété de besoins de formatage et de structuration de données dans tout système logiciel. Vous construirez un système avec validation de données à chaque étape, en utilisant les modèles Pydantic pour valider tout, depuis les entrées utilisateur et les réponses LLM jusqu’à la définition des paramètres pour l’appel d’outils. Essayez de travailler chaque exercice et vous pouvez cliquer pour voir la correction et l’explication.

Exercice 1 : Création d'un Modèle de Base

Exercice

Créez un modèle Pydantic nommé Utilisateur pour représenter un utilisateur avec un id (entier), un nom (chaîne de caractères) et une date_inscription (objet datetime).

Exercice 2 : Gestion des Champs Optionnels et des Valeurs par Défaut

Exercice

Modifiez le modèle Utilisateur pour que le nom ait une valeur par défaut de “Anonyme” et ajoutez un champ optionnel email qui doit être une chaîne de caractères.

Exercice 3 : Validation de Types Spécifiques (EmailStr)

Exercice

Créez un modèle Contact avec un champ nom (chaîne) et un champ adresse_email qui doit être un email valide. Tentez de l’instancier avec une adresse email invalide pour observer l’erreur.

Exercice 4 : Modèles Imbriqués (Nested Models)

Exercice

Créez un modèle Article avec un titre et un contenu. Créez ensuite un modèle Blog qui contient un nom_blog et une liste_articles (une liste d’objets Article).

Exercice 5 : Validateur Personnalisé (field_validator)

Exercice

Créez un modèle CritiqueProduit avec note (entier) et commentaire (chaîne). Ajoutez un validateur pour s’assurer que la note est toujours comprise entre 1 et 5 (inclus).

Partie 2 : Pydantic pour Valider les Entrées et Sorties de LLM

Exercice 6 : Extraire une Entité Simple depuis un Texte de LLM

Exercice

Un LLM a généré le texte suivant : “Le ticket de support #TS-481516 concerne un problème de connexion.”. Créez un modèle Pydantic TicketInfo pour extraire uniquement l’ID du ticket. Vous devrez utiliser une étape de pré-traitement (regex) avant de valider.

Exercice 7 : Gérer une Sortie LLM Incomplète

Exercice

Un LLM devait extraire un nom et un email, mais n’a trouvé que le nom : “L’utilisateur s’appelle Jean Dupont.”. Votre modèle Contact requiert un nom et un email. Comment gérer cette situation en utilisant votre modèle ? (Ceci est un exercice de réflexion).

Exercice (Question Théorique) : Que se passera-t-il si vous essayez de créer une instance du modèle Contact (de l’exercice 3) avec uniquement le nom ? Quelle serait une meilleure définition du modèle pour gérer ce cas ?

Exercice 8 : Utiliser des Enum pour Classifier une Sortie LLM

Exercice

Un LLM analyse le sentiment d’un commentaire. La sortie doit être “POSITIF”, “NÉGATIF” ou “NEUTRE”. Créez un modèle Pydantic AnalyseSentiment qui valide que la sortie du LLM est bien l’une de ces trois valeurs.

Exercice 9 : Utiliser des Alias de Champs (Field)

Exercice

Votre LLM renvoie un JSON avec la clé “user_name”. Cependant, votre code Python interne utilise la convention nom_utilisateur. Créez un modèle Pydantic Profil qui mappe la clé entrante “user_name” à l’attribut nom_utilisateur.

Exercice 10 : Parser une Liste d'Objets Structurés

Exercice

Un LLM a extrait une liste de livres d’un texte et l’a formatée en JSON. Créez les modèles Pydantic nécessaires pour valider la structure suivante : une liste de livres, où chaque livre a un titre et un auteur.

Partie 3 : Demande de Sortie Structurée et Tool Calling

Exercice 11 : Utilisation de instructor pour Forcer une Sortie Structurée

Exercice

Imaginez que vous utilisez la bibliothèque instructor pour patcher un client OpenAI. Votre objectif est d’extraire des informations structurées à partir d’un texte.

  1. Définissez un modèle Pydantic Personne avec les champs nom (str) et age (int).

  2. Écrivez le pseudo-code Python (en simulant l’appel à l’API OpenAI) qui utiliserait instructor pour forcer le LLM à répondre avec une instance du modèle Personne à partir du texte fourni.

Contexte :
Texte d’entrée : “Marc a 32 ans et est ingénieur logiciel. Sa sœur, Léa, a 28 ans.”
Objectif : Extraire les informations sur la première personne mentionnée.

Exercice 12 : Définition d'un Outil (Tool) pour un Agent LLM

Exercice

Vous construisez un agent capable de gérer une playlist musicale. L’un de ses outils est ajouter_chanson_playlist. Cet outil nécessite deux arguments : nom_chanson et nom_artiste. Définissez un modèle Pydantic AjouterChansonParams qui servira à valider les arguments que le LLM fournira pour cet outil.

Exercice 13 : Routage de Tâches basé sur des Modèles Pydantic

Exercice

Un LLM de support client doit router les requêtes vers deux services différents : la facturation ou le support technique.

  1. Créez un modèle RequeteFacturation avec id_facture (str) et montant (float).

  2. Créez un modèle RequeteSupportTechnique avec type_produit (str) et description_probleme (str).

  3. À partir d’une requête utilisateur, le LLM doit choisir l’un des deux modèles et remplir ses champs. Simulez ce processus : validez les données JSON ci-dessous en utilisant le modèle approprié.

Contexte :
Requête utilisateur : “Mon imprimante modèle X-500 ne se connecte plus au WiFi. Le voyant clignote en rouge.”
Sortie JSON du LLM : {‘type_produit’: ‘Imprimante X-500’, ‘description_probleme’: ‘Problème de connexion WiFi, voyant rouge clignotant.’}

Exercice 15 : Cas d'Usage Complet - Mini-Workflow d'Agent

Exercice

Synthétisez les concepts précédents dans un mini-workflow. Un agent doit planifier un voyage.

  1. Étape 1 : Valider l’entrée. Créez un modèle DemandeVoyage pour valider la requête initiale de l’utilisateur : destination (str) et budget (float, doit être > 0).

  2. Étape 2 : Extraction par LLM. Créez un modèle PlanVoyage que le LLM devra remplir. Il doit contenir ville_hotel (str), nombre_etoiles_hotel (int, entre 1 et 5), et activite_suggeree (str).

  3. Étape 3 : Simuler le workflow.
    a. Validez une entrée utilisateur simulée avec DemandeVoyage.
    b. Utilisez les informations validées pour simuler un prompt et une réponse structurée du LLM.
    c. Validez la réponse du LLM avec le modèle PlanVoyage.

Plus chez DeepLearn Academy