Un agent LLM est un modèle de langage placé dans une boucle : il lit la demande, décide d'appeler un outil (requête, calcul, recherche), lit le résultat, puis recommence jusqu'à pouvoir répondre. Les chiffres viennent des outils, pas de la mémoire du modèle. C'est ainsi qu'on automatise des tâches en plusieurs étapes.
Un assistant de direction à qui l'on donne l'accès aux tableaux de bord et une calculatrice. Il ne connaît pas les chiffres par cœur : il va les chercher, calcule, et revient avec une réponse sourcée.
Chaque outil a un nom, une description et des paramètres attendus. Le LLM ne voit que cette description, jamais le code de l'outil.
Le modèle répond par une demande d'appel : tel outil, avec tels paramètres. Le programme exécute l'outil et renvoie le résultat au modèle.
Le modèle enchaîne les appels nécessaires, vérifie les résultats, puis rédige sa réponse. Un nombre maximal de tours évite les boucles sans fin.
Un directeur réseau demande quelle zone a le meilleur chiffre d'affaires au m². L'agent dispose d'un outil qui calcule les statistiques d'une zone à partir du fichier des 400 magasins.
L'agent appelle l'outil pour chaque zone, compare les résultats et rédige sa réponse. Le code affiche chaque appel : on sait d'où vient chaque chiffre.
On prépare des questions dont on connaît la réponse, et on mesure la part de réponses justes, le nombre d'appels et le coût. On relit la trace des échecs : mauvais outil, mauvais paramètre ou mauvaise lecture du résultat.
Noms donnés pour l'API Messages d'Anthropic, utilisée dans le code ; les autres fournisseurs ont des équivalents directs.
Le LLM choisit ses outils sur leur seule description. Nom explicite, rôle, valeurs possibles des paramètres : c'est le réglage le plus rentable.
Garde-fou contre les boucles et les coûts qui dérapent. Le code s'arrête à 5 tours.
Donner à l'agent des outils en lecture seule dès que possible. Toute action qui modifie des données passe par une validation humaine.
Rôle, périmètre, format de réponse, conduite à tenir quand un outil échoue. Préciser qu'aucun chiffre ne doit être donné sans appel d'outil.
# Pilotage d'un réseau de magasins : agent LLM en Python
import json
import pandas as pd
import anthropic # clé API dans la variable d'environnement ANTHROPIC_API_KEY
magasins = pd.read_csv("magasins.csv")
def stats_zone(zone): # l'outil : du code classique, qui calcule sur les vraies données
sel = magasins[magasins["zone"] == zone]
return {"nb_magasins": len(sel), "ca_moyen_k": round(sel["ca_k"].mean(), 1),
"ca_par_m2_k": round(sel["ca_k"].sum() / sel["surface_m2"].sum(), 3)}
outils = [{"name": "stats_zone", "description": "Statistiques des magasins d'une zone : centre_ville, peripherie ou rural.",
"input_schema": {"type": "object", "properties": {"zone": {"type": "string"}}, "required": ["zone"]}}]
messages = [{"role": "user", "content": "Quelle zone a le meilleur CA au m2 ? Justifiez avec les chiffres."}]
client = anthropic.Anthropic()
for tour in range(5): # garde-fou : 5 tours au maximum
reponse = client.messages.create(model="claude-sonnet-5-5", max_tokens=1000, tools=outils, messages=messages)
messages.append({"role": "assistant", "content": reponse.content})
if reponse.stop_reason != "tool_use":
break
resultats = []
for bloc in reponse.content:
if bloc.type == "tool_use": # le LLM demande un appel, le programme l'exécute
print("Appel :", bloc.name, bloc.input)
resultats.append({"type": "tool_result", "tool_use_id": bloc.id, "content": json.dumps(stats_zone(**bloc.input))})
messages.append({"role": "user", "content": resultats})
print("".join(b.text for b in reponse.content if b.type == "text"))
Les agents LLM se construisent surtout en Python : en R, le package ellmer permet de déclarer des outils qu'un LLM peut appeler.
Un chatbot répond avec ce qu'il sait. Un agent agit : il appelle des outils, lit leurs résultats et enchaîne plusieurs étapes avant de répondre. La frontière s'estompe, car les assistants grand public disposent désormais d'outils comme la recherche web ou l'exécution de code.
La capacité d'un LLM à répondre par une demande structurée, par exemple un nom de fonction et ses paramètres en JSON, plutôt que par du texte libre. Le programme exécute la fonction et renvoie le résultat au modèle. C'est la brique de base de tout agent.
Sur des tâches courtes et bien outillées, souvent oui. Chaque étape comporte un petit risque d'erreur, qui se cumule sur les tâches longues. D'où l'intérêt des traces, des tests sur des cas connus et d'une validation humaine avant toute action sensible.
Donne au LLM des passages de documents. Un agent peut utiliser un RAG comme l'un de ses outils.
Voir la fiche → le moteurLe modèle de langage qui lit, décide et rédige. L'agent l'entoure d'outils et d'une boucle.
Voir la fiche → l'autre sens du mot agentEn apprentissage par renforcement, un agent apprend une stratégie par essais et récompenses. Un agent LLM, lui, n'apprend pas pendant la tâche.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus