Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Agent avec boucle de decision
Un agent, c'est un programme qui decide quoi faire tout seul. Au lieu de suivre un pipeline fixe, il observe la situation, choisit une action, l'execute, observe le resultat, et recommence. C'est une boucle : observer -> decider -> agir -> observer.
Pense a un robot aspirateur. Il observe (detecte un obstacle), decide (tourner a gauche), agit (tourne), observe le resultat (voie libre), et continue.
Pour un agent LLM, le "decide" c'est le LLM qui choisit quel outil appeler. Le "agit" c'est l'execution de l'outil. Le "observe" c'est le resultat de l'outil renvoye au LLM. Et la boucle continue jusqu'a ce que le LLM decide qu'il a la reponse finale.
Tu vas creer une classe SimpleAgent avec :
__init__(self, outils, decideur, max_iterations=5) : - outils : dictionnaire {nom: fonction} - decideur : fonction qui prend (question, historique) et renvoie soit {"action": "outil", "outil": nom, "args": dict} pour appeler un outil, soit {"action": "repondre", "reponse": texte} pour donner la reponse finale - max_iterations : nombre maximum de tours de boucle
executer(self, question) : lance la boucle agent. A chaque tour : 1. Appelle le decideur avec la question et l'historique des actions precedentes 2. Si le decideur dit "repondre", renvoie {"reponse": texte, "iterations": n, "historique": historique} 3. Si le decideur dit "outil", execute l'outil correspondant, ajoute le resultat a l'historique, et continue 4. Si max_iterations est atteint, renvoie {"reponse": "Max iterations atteint", "iterations": max_iterations, "historique": historique}
L'historique est une liste de dictionnaires {"outil": nom, "args": args, "resultat": resultat}.
Exemple :
outils = {"meteo": lambda ville: f"25 degres a {ville}"}
def decideur(question, historique): if not historique: return {"action": "outil", "outil": "meteo", "args": {"ville": "Paris"}} return {"action": "repondre", "reponse": f"Il fait {historique[-1]['resultat']}"}
agent = SimpleAgent(outils, decideur) agent.executer("Quel temps fait-il ?") renvoie {"reponse": "Il fait 25 degres a Paris", "iterations": 2, "historique": [...]}