Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Projet : mini agent autonome complet
Tu as appris a valider les entrees, router les requetes, gerer la memoire, utiliser des outils, creer des pipelines, et tracer les appels. Il est temps d'assembler tout ca dans un mini agent autonome qui combine ces concepts.
C'est comme ca que fonctionnent les agents LLM en production : une couche de validation, un router, un cache, des outils, des guardrails, et de l'observabilite. Chaque brique que tu as construite dans les exercices precedents est un composant du systeme final.
Tu vas creer une classe MiniAgent qui integre :
__init__(self, outils, mots_cles_domaine) : - outils : dictionnaire {nom: fonction} - mots_cles_domaine : liste de mots-cles pour la validation - Initialise aussi un cache (dictionnaire), un historique de conversation (liste) et un log d'appels (liste)
traiter(self, question) : le pipeline complet : 1. Validation : verifie que la question n'est pas vide et contient au moins un mot-cle du domaine (insensible a la casse). Si invalide, renvoie {"statut": "rejete", "raison": "..."} 2. Cache : si la question normalisee (strip + lower) est dans le cache, renvoie {"statut": "cache", "reponse": reponse_cachee} 3. Routing : si la question contient le nom d'un outil (cle du dictionnaire outils), appelle cet outil avec la question comme argument. Sinon, renvoie une reponse par defaut : "Je ne sais pas repondre a cette question." 4. Logging : enregistre dans le log {"question": question, "reponse": reponse, "source": "outil" ou "defaut"} 5. Cache : stocke la reponse dans le cache 6. Historique : ajoute la question et la reponse a l'historique 7. Renvoie {"statut": "ok", "reponse": reponse}
stats(self) : renvoie {"questions_traitees": n, "cache_hits": n, "rejets": n}
Exemple :
def chercher(question): return "Paris est la capitale de la France"
agent = MiniAgent( outils={"chercher": chercher}, mots_cles_domaine=["capitale", "pays", "geographie"] ) agent.traiter("Quelle est la capitale de la France ?") renvoie {"statut": "ok", "reponse": "Paris est la capitale de la France"}
agent.traiter("Quelle est la capitale de la France ?") renvoie {"statut": "cache", "reponse": "Paris est la capitale de la France"}
agent.traiter("Raconte-moi une blague") renvoie {"statut": "rejete", "raison": "Hors sujet"}