Aller au contenu
← Tous les guides

Guide pratique · TypeScript

Exécuter un outil LangChain en TypeScript

Déclarez un outil, validez ses arguments et observez son exécution avec un exemple local sans clé API.

Par Salim — GenAI Labs ·

Le déclic : décrire une fonction ne la lance pas

Vous pouvez donner au modèle une description parfaite de votre outil : cela ne signifie pas que votre fonction s’est exécutée. Cette distinction évite de chercher une erreur dans le prompt quand le problème se trouve dans le code de l’application.

Nous allons déclarer un outil d’addition, puis l’appeler nous-mêmes. Vous verrez exactement quand le calcul a lieu. Aucun modèle ni clé API : cet exemple isole l’exécution, il ne prétend pas reproduire le choix d’un outil par un LLM.

Préparer l’exemple

Installez Node.js 22 ou plus récent. Téléchargez le dossier des exemples, décompressez-le et ouvrez un terminal dans ce dossier.

npm ci
npm run tools

Versions verrouillées : @langchain/core 1.2.14, Zod 4.4.3 et tsx 4.22.4. Le programme complet est tool-demo.mts. L’installation télécharge des dépendances ; le programme n’appelle aucun fournisseur de modèles.

Trois rôles, trois responsabilités

Chargement du schéma…

Dans notre démonstration, nous fournissons les arguments à la main. Dans un agent, le modèle pourrait demander un appel ; votre application déciderait ensuite s’il est autorisé et l’exécuterait. Le schéma vérifie une forme de données, il ne remplace pas cette autorisation.

Voici le cœur du programme, après les imports de tool et de Zod :

let executions = 0;
const addition = tool(
  ({ a, b }) => {
    executions += 1;
    return String(a + b);
  },
  {
    name: "addition",
    description: "Additionne deux nombres.",
    schema: z.object({ a: z.number(), b: z.number() }),
  },
);
const result = await addition.invoke({ a: 2, b: 3 });

tool associe votre fonction à sa description et à son schéma. invoke déclenche la validation puis la fonction. Le compteur rend cette exécution visible, même si votre outil ne produit aucun log.

Ce que vous devez observer

Avant invoke : 0 exécution
Résultat : 5
Après invoke : 1 exécution
Entrée invalide : rejetée avant exécution

La dernière ligne vient d’un second appel avec une chaîne à la place d’un nombre. Le programme vérifie que le compteur n’augmente pas : l’entrée a été rejetée avant le calcul.

À vous : remplacez 2 et 3 par 8 et 4, adaptez l’assertion du résultat, puis relancez. Ensuite, essayez a: "8". Prédisez le comportement avant de lire le message d’erreur.

Quand le brancher à un modèle ?

Lorsque ce mécanisme fonctionne, vous pouvez rendre l’outil disponible avec bindTools, recevoir une demande du modèle et la traiter. Tous les modèles ne prennent pas en charge les mêmes outils. Certains outils sont exécutés chez le fournisseur ; ce guide concerne ceux que votre application exécute.

Avant un outil qui écrit, paie ou supprime, ajoutez les droits, limites et éventuelles validations humaines nécessaires. Un argument techniquement valide peut encore décrire une action interdite.

Votre repère : vous savez expliquer qui décrit, qui demande et qui exécute. Le premier graphe LangGraph vous aidera à organiser ces étapes.

Pour vérifier les APIs : documentation officielle des outils LangChain. Les versions de ce dossier sont verrouillées ; une mise à jour exige de rejouer ses exemples.

Vérifier que cette manière d’apprendre vous convient

L’extrait gratuit reprend le mécanisme des outils avec un checkpoint. Vous pouvez ensuite consulter le programme, les prérequis et le prix de la formation.