▶ Vidéo · 34s

Créer un agent IA de zéro

API Claude · Agents · Niveau débutant

Les grandes écoles réécrivent leurs programmes, et les recruteurs commencent à demander aux candidats ingénieurs de construire un agent IA en direct pendant l'entretien. Le problème, c'est que personne n'explique jamais ce qu'est vraiment un agent. Ce guide le fait, et tu repars avec un agent qui tourne.

Un agent IA, c'est trois choses

Oublie le marketing. Un agent, c'est une boucle avec trois pièces :

  • Un modèle — le cerveau qui décide quoi faire (ici Claude).
  • Des outils — des fonctions qu'il a le droit d'appeler : chercher dans une base, envoyer un mail, lire un fichier.
  • Une boucle — tant que le modèle demande un outil, tu l'exécutes, tu lui rends le résultat, et tu le rappelles. Quand il arrête de demander, c'est fini.

C'est tout. Un chatbot répond une fois. Un agent boucle jusqu'à ce que le travail soit fait.

Installation

pip install anthropic export ANTHROPIC_API_KEY="ta-clé"

Un agent complet en 25 lignes

Le SDK gère la boucle pour toi avec le tool runner. Tu écris juste les outils, il s'occupe du reste : appeler le modèle, exécuter l'outil demandé, renvoyer le résultat, recommencer.

import anthropic from anthropic import beta_tool client = anthropic.Anthropic() @beta_tool def get_weather(city: str) -> str: """Donne la météo actuelle d'une ville. Args: city: Le nom de la ville, par exemple Saint-Denis. """ return f"27 degrés et ensoleillé à {city}" runner = client.beta.messages.tool_runner( model="claude-opus-4-8", max_tokens=16000, tools=[get_weather], messages=[{"role": "user", "content": "Il fait quoi à Saint-Denis ?"}], ) for message in runner: for block in message.content: if block.type == "text": print(block.text)

Le décorateur @beta_tool lit la signature de ta fonction et sa docstring pour générer le schéma automatiquement. Tu n'écris pas une ligne de JSON.

La même chose à la main, pour comprendre la boucle

Si tu veux voir ce que le tool runner fait à ta place, la voilà. C'est la boucle, littéralement :

messages = [{"role": "user", "content": question}] while True: response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, tools=tools, messages=messages, ) if response.stop_reason == "end_turn": break # il n'a plus besoin d'outil : c'est terminé messages.append({"role": "assistant", "content": response.content}) results = [] for block in response.content: if block.type == "tool_use": results.append({ "type": "tool_result", "tool_use_id": block.id, # doit correspondre au bloc tool_use "content": execute(block.name, block.input), }) messages.append({"role": "user", "content": results})
Piège vu en production

Renvoie toujours le response.content complet dans l'historique, pas seulement le texte. Si tu ne gardes que le texte, tu perds les blocs tool_use et l'API rejette ton appel suivant parce qu'un tool_result ne correspond plus à rien. C'est l'erreur numéro un quand on écrit la boucle soi-même.

Sécurité

Le tool runner exécute tes fonctions automatiquement dès que le modèle les demande. Pour tout ce qui a un effet irréversible — envoyer un mail, débiter, supprimer — mets une validation humaine dans la fonction : demande confirmation, et renvoie « refusé par l'utilisateur » si la réponse est non.

Ce que ton agent sait faire ensuite

À partir de ce squelette, tu ajoutes des outils et l'agent devient utile :

  • Un outil qui lit ta base clients → il répond aux questions sur tes clients.
  • Un outil qui appelle une API météo, un CRM, un webhook n8n → il agit sur tes vrais systèmes.
  • Plusieurs outils d'un coup → il enchaîne : cherche, filtre, écrit, envoie. Sans que tu écrives l'enchaînement.

La description de chaque outil compte plus que son code : c'est elle que le modèle lit pour décider quand l'appeler. Sois explicite sur quand l'utiliser, pas seulement sur ce qu'il fait.

Pour aller plus loin

Si tu veux d'abord comprendre la théorie avant de coder, commence par C'est quoi un agent IA. Une fois le tien construit, apprends à le fiabiliser avec Tester un agent avant de lui faire confiance.

Documentation officielle tool use →
← Retour aux ressources