Tool calling (function calling)

IA / LLM 🟡 Mid

Définition

Le modèle reçoit des définitions d'outils (name, description, input_schema JSON Schema) et, quand il en a besoin, répond par un bloc tool_use avec les arguments au lieu de texte (stop_reason: tool_use). Le code exécute la fonction et renvoie un bloc tool_result (tool_use_id, content, is_error). Chez OpenAI, même idée avec type: function et des items function_call / function_call_output.

Analogie

Un assistant qui, au lieu de deviner la météo, vous tend un formulaire rempli « appelle le service météo avec ville=Paris ».

Exemple de code

const tools: Anthropic.Tool[] = [{
  name: 'get_order',
  description: 'Retourne le statut d\'une commande à partir de son numéro.',
  input_schema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },
}];
let res = await client.messages.create({ model: 'claude-sonnet-5', max_tokens: 500, tools, messages });
if (res.stop_reason === 'tool_use') {
  const call = res.content.find(b => b.type === 'tool_use')!;
  const result = await db.orders.findById((call.input as { id: string }).id); // exécution côté serveur
  messages.push({ role: 'assistant', content: res.content },
    { role: 'user', content: [{ type: 'tool_result', tool_use_id: call.id, content: JSON.stringify(result) }] });
  res = await client.messages.create({ model: 'claude-sonnet-5', max_tokens: 500, tools, messages });
}

Cas d'usage

Connecter le modèle à une base, une API métier, un calculateur : la base de tout agent.

Anti-pattern

Exécuter les arguments sans validation (chemin de fichier, requête SQL) : traiter tool_use comme une entrée utilisateur.
#ia#agents#api#interview

En entretien

  1. Explique-moi le mécanisme du tool calling.

    Le modèle reçoit des définitions d'outils avec un schéma JSON, et quand il en a besoin il répond par un bloc tool_use avec des arguments au lieu de texte. Le code exécute la fonction et renvoie le résultat dans un bloc tool_result pour que le modèle continue.

  2. Quelle différence entre tool calling et RAG ?

    Le tool calling connecte le modèle à une action ou une donnée en temps réel via une fonction exécutée par le code, alors que le RAG injecte des passages récupérés directement dans le prompt. Le tool calling est la base de tout agent qui doit interagir avec un système externe.

  3. Quel est le piège de sécurité classique du tool calling ?

    Exécuter les arguments renvoyés par le modèle sans validation, comme un chemin de fichier ou une requête SQL, revient à traiter tool_use comme une entrée utilisateur non fiable. Il faut toujours valider ces arguments côté serveur avant exécution.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre