Exercice 14 / 18

Tool use : donner des outils à l'agent

Function calling, schémas, MCP

Le tool use (ou function calling) permet à un LLM d'appeler des fonctions que tu lui fournis. C'est la brique de base d'un agent.

1. Le principe

  1. Tu déclares des fonctions au modèle (nom, description, paramètres).
  2. Le modèle décide s'il faut en appeler une et avec quels arguments.
  3. Tu exécutes la fonction et lui renvoies le résultat.
  4. Le modèle continue son raisonnement à partir du résultat.
Les quatre temps du tool use : tu déclares les outils, le modèle choisit l'appel et ses arguments, tu exécutes et renvoies le résultat, le modèle rédige sa réponse

2. Exemple : agent météo

Outils déclarés :

{
  "name": "get_weather",
  "description": "Donne la météo actuelle d'une ville",
  "parameters": {
    "city": { "type": "string", "description": "Nom de la ville" }
  }
}

User : « Faut-il un parapluie à Paris aujourd'hui ? »

Modèle (1er tour) : appelle get_weather(city="Paris")

Toi : exécutes l'appel API → réponse { temperature: 15, condition: "pluvieux" } → tu renvoies au modèle.

Modèle (2ème tour) : « Oui, il pleut à Paris (15°C). Prends un parapluie. »

3. Anatomie d'une bonne description d'outil

  • Nom court et descriptif (en snake_case)
  • Description claire : quand l'utiliser, ce qu'il fait, ce qu'il retourne
  • Schéma précis des paramètres (types, format, contraintes)
  • Exemples dans la description si nécessaire

Une mauvaise description = le modèle n'appelle pas l'outil ou l'appelle mal.

4. MCP (Model Context Protocol)

Protocole ouvert (lancé par Anthropic en 2024) qui standardise la connexion entre LLMs et outils externes.

Idée : un serveur MCP expose des outils → n'importe quel client (Claude Desktop, Cursor, Claude Code, etc.) peut s'y brancher.

Écosystème en pleine expansion en 2026 : serveurs MCP pour GitHub, Slack, Notion, bases SQL…

5. Frameworks pour le tool use

  • OpenAI : tools paramètre de Chat Completions
  • Anthropic : tools paramètre de Messages API
  • Gemini : function calling natif
  • LangChain : Tool class universelle

6. Bonnes pratiques

  • Moins d'outils, mieux décrits > beaucoup d'outils mal décrits
  • Idempotence : un outil peut être appelé plusieurs fois sans casser le système
  • Validation des paramètres côté serveur (le LLM peut hallucinés)
  • Sécurité : un outil destructif (delete_user) doit demander confirmation
  • Logs : tracer chaque appel pour debugger
✏️ Exercice

Tu construis un agent qui envoie des emails. Décris un outil send_email avec :

  • nom
  • description
  • schéma des paramètres (au moins : destinataire, sujet, corps)

Format : JSON.

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →