Aller au contenu principal

Récapitulation et examen final

Dix modules pour partir d'un premier appel chat et arriver à un assistant de notes de frais outillé, tracé et testable. Voici le cours condensé, les fils qui le traversent, et l'annonce de l'examen.

Le cours d'un coup d'œil

ModuleL'essentiel à retenir
1. Apport de LangChainInterfaces communes aux fournisseurs ; utile dès la deuxième brique, superflu pour un appel isolé
2. Modèles, consignes, analyseurswith_structured_output(pydantic) est la voie par défaut ; temperature=0 en extraction
3. Composition de chaînes| compose ; RunnablePassthrough.assign enrichit ; RunnableParallel ne sert que pour des branches indépendantes
4. Chargeurs et découpageMétadonnées plates dès le chargement ; RecursiveCharacterTextSplitter 500 / 80 couvre 90 % des cas
5. Bases vectoriellesSans score_threshold, l'assistant invente ; MultiQueryRetriever rattrape les reformulations
6. MémoireRunnableWithMessageHistory par session_id ; plafonner à 15-25 % de la fenêtre du modèle
7. OutilsFonction typée + @tool ; Literal et pydantic évitent les arguments invalides
8. AgentsLangGraph explicite le graphe ; recursion_limit coupe les boucles infinies ; interrupt_before pour l'humain
9. Traçage et évaluationUn jeu de 30-80 cas est la spécification exécutable ; comparer deux versions avant de déployer
10. ProjetTrois catégories d'erreurs d'outil, trois traitements ; cache et budget plafonné dès le premier déploiement

Les fils qui traversent le cours

Tout est un Runnable. Un modèle chat, un gabarit, un analyseur, un récupérateur, une fonction Python enveloppée dans RunnableLambda, une chaîne, un agent : chacun expose .invoke, .stream, .batch et leurs cousins asynchrones. Cette uniformité est ce qui rend possible la composition avec |, le traçage automatique et le remplacement d'un fournisseur par un autre en changeant un import. Comprendre le contrat Runnable rend le reste du cours déductible plutôt que mémorisable.

Une abstraction n'est utile qu'à partir de la deuxième brique. Un appel isolé ne mérite pas trois Runnable ; il mérite un SDK officiel et cinq lignes. Dès qu'on a un récupérateur, une mémoire, un outil, un branchement ou un fournisseur à pouvoir changer, LCEL gagne largement. Choisir l'agent par défaut pour un flux dont l'ordre est connu est l'anti-patron le plus fréquent en 2026.

La qualité d'un système LLM se joue aux frontières. Le récupérateur avec ou sans score_threshold, la mémoire avec ou sans trim_messages, l'outil avec ou sans pydantic, l'agent avec ou sans recursion_limit : à chaque fois, un paramètre de bord fait la différence entre un système qui invente et un système qui refuse honnêtement. Les modules 5, 6, 7 et 8 sont, littéralement, un catalogue de garde-fous.

On n'améliore pas ce qu'on ne mesure pas. Le module 9 n'est pas un module d'observabilité annexe : c'est la condition pour que les neuf autres ne se dégradent pas au fil des versions. Un jeu d'évaluation de trente cas et un tableau de bord de coût par catégorie économisent des semaines de rattrapage après le premier déploiement.

La carte des composants du fil rouge

L'assistant de notes de frais assemblé au module 10 recouvre tout le cours :

  • Documents (module 4) : politique PDF chargée avec métadonnées, tickets extraits par OCR puis structurés en pydantic (module 2).
  • Récupération (module 5) : Chroma local sur politique-2026, seuil 0,75, MultiQueryRetriever pour les reformulations utilisateurs.
  • Mémoire (module 6) : SQLChatMessageHistory par employé, trim_messages sur 1 200 jetons, réécriture de question avant récupération.
  • Outils (module 7) : chercher_politique, convertir_en_eur, verifier_plafond, ajouter_ligne_tableur, tous à schéma pydantic strict.
  • Agent (module 8) : create_react_agent avec PostgresSaver, interrupt_before=["tools"] pour les gestes lourds, recursion_limit=10.
  • Interface (module 10) : FastAPI avec astream_events pour le flux, endpoint séparé d'approbation.
  • Traçage (module 9) : LangSmith sur toute la chaîne, CoutCumule maison par catégorie, jeu d'évaluation de 50 cas versionné.

L'examen final

L'examen comporte 40 questions couvrant les dix modules : choix entre appel direct et chaîne LangChain, écriture d'un Runnable en LCEL, gestion des erreurs d'analyse, calibration d'un seuil de récupération, prévention de la saturation du contexte, déclaration d'un outil typé, boucles d'agent et limites, jeu d'évaluation et détection de régression, décisions de production.

Plusieurs questions présentent des situations à diagnostiquer : un pipeline dont la latence a doublé sans raison apparente, un agent qui boucle sur le même outil, un récupérateur qui remonte n'importe quoi, un contexte saturé par une mémoire non plafonnée, une régression silencieuse après changement de modèle. C'est le jugement qui est évalué, pas la récitation de signatures.

En cas de réussite, votre attestation d'achèvement est délivrée immédiatement ; son numéro est vérifiable par tout tiers sur la plateforme.

Avant de commencer

Reprenez le tableau du cours et, pour chaque ligne, demandez-vous « quel signal me dirait que je me trompe ici ? ». Si vous savez pourquoi un agent boucle, pourquoi un récupérateur sans seuil invente, pourquoi une mémoire non plafonnée fait exploser le coût, et à quel moment un simple appel direct au fournisseur est préférable à LangChain, vous êtes prêt. Bonne chance !

Examen final

Prêt à valider ce cours ?

40 questions tirées au hasard dans la banque du cours · seuil de réussite 70 % · certificat PDF vérifiable délivré immédiatement en cas de réussite.

Commencer l'examen

Connexion à votre compte InSkillML et abonnement actif requis. Vous pouvez aussi lancer l'examen depuis Mes cours.