écrits/blog/2026/06
Blog10 juin 2026·6 min

Vercel AI SDK 6 : créer des agents IA en TypeScript

AI SDK 6 transforme la boîte à outils IA TypeScript la plus utilisée en framework d'agents. Découvrez l'abstraction Agent, l'approbation d'outils, MCP et les sorties structurées.

Pendant deux ans, le Vercel AI SDK a été le choix par défaut, presque invisible, du développement IA en TypeScript. Si vous avez diffusé une réponse de modèle vers une application React en 2024 ou 2025, vous avez presque certainement utilisé streamText et useChat. C'était une boîte à outils, pas un framework — une fine couche neutre vis-à-vis du fournisseur, posée sur les API des modèles.

AI SDK 6 change cette posture. Il conserve les fonctions de bas niveau mais ajoute une abstraction Agent de première classe, un support MCP stable, l'approbation humaine des outils et des sorties structurées unifiées. En bref, la boîte à outils a mûri pour devenir une base sur laquelle bâtir des systèmes autonomes, sans abandonner les primitives qui ont fait son succès.

Ce guide parcourt ce qui a réellement changé et pourquoi cela compte pour les équipes qui livrent des produits IA aujourd'hui.

Deux couches : fonctions et agents

La bibliothèque propose désormais deux altitudes d'API, et choisir la bonne est la première décision de conception.

Au bas niveau, vous avez toujours generateText et streamText. Ces fonctions sont non opinionnées. Vous passez un modèle, une invite et un ensemble d'outils, et vous contrôlez la boucle vous-même via stopWhen :

import { generateText, tool, stepCountIs } from 'ai';
import { z } from 'zod';
 
const { text } = await generateText({
  model: 'openai/gpt-5',
  prompt: 'Que faire ce week-end à Tunis ?',
  stopWhen: stepCountIs(5),
  tools: { weather, activities },
});

Le SDK gère le travail mécanique à chaque étape : il extrait les appels d'outils que le modèle veut effectuer, valide les arguments contre votre schéma, exécute votre fonction, ajoute le résultat à la conversation, puis interroge à nouveau le modèle — jusqu'à ce que la condition d'arrêt soit atteinte. Note importante en v6 : generateObject et generateText sont désormais unifiés, vous pouvez donc exécuter une boucle d'outils multi-étapes et obtenir un objet structuré typé à la fin.

Au haut niveau se trouve la nouvelle interface Agent. Au lieu de câbler la boucle manuellement à chaque fois, vous définissez un agent une seule fois avec son modèle, ses instructions et ses outils, puis vous le réutilisez partout.

Définir un outil

Les outils sont le cœur de tout agent, et le schéma de définition reste propre et inchangé. Chaque outil possède une description pour le modèle, un inputSchema Zod et une fonction execute :

import { tool } from 'ai';
import { z } from 'zod';
 
export const weatherTool = tool({
  description: 'Obtenir la météo actuelle dans un lieu',
  inputSchema: z.object({
    location: z.string().describe('La ville dont on veut la météo'),
  }),
  execute: async ({ location }) => ({
    temperature: 72,
  }),
});

Le schéma Zod joue un double rôle. Il indique au modèle la forme exacte des arguments à produire, et il valide ce que le modèle renvoie avant même que votre fonction execute ne s'exécute. Les arguments incorrects n'atteignent jamais votre code.

ToolLoopAgent : le défaut de production

L'ajout phare est ToolLoopAgent, une implémentation prête à l'emploi de l'interface Agent qui gère pour vous la boucle complète d'exécution des outils :

import { ToolLoopAgent } from 'ai';
import { weatherTool } from '@/tools/weather';
 
export const weatherAgent = new ToolLoopAgent({
  model: 'anthropic/claude-sonnet-4.5',
  instructions: 'Tu es un assistant météo utile.',
  tools: { weather: weatherTool },
});
 
const result = await weatherAgent.generate({
  prompt: 'Quel temps fait-il à San Francisco ?',
});

Par défaut, la boucle tourne jusqu'à 20 étapes — stopWhen: stepCountIs(20) — une marge suffisante pour la plupart des tâches réelles tout en bornant les comportements incontrôlés. Élément crucial : Agent en v6 est une interface, pas une classe scellée. ToolLoopAgent est le défaut sensé, mais si votre produit exige un flux de contrôle différent, vous pouvez implémenter l'interface vous-même tout en restant branché au reste de l'écosystème.

Approbation humaine des outils

C'est la fonctionnalité qui rend AI SDK 6 viable pour les opérations sensibles. Un simple indicateur needsApproval met l'exécution en pause jusqu'à confirmation par un humain. Vous pouvez le fixer à true directement, ou passer une fonction qui décide selon les arguments :

export const runCommand = tool({
  description: 'Exécuter une commande shell',
  inputSchema: z.object({
    command: z.string(),
  }),
  needsApproval: async ({ command }) => command.includes('rm -rf'),
  execute: async ({ command }) => {
    // atteint seulement après approbation
  },
});

Ce schéma conditionnel est à la bonne altitude pour la production : les lectures de routine s'exécutent automatiquement, et seuls les appels véritablement dangereux — supprimer des fichiers, envoyer de l'argent, modifier une base de données — remontent à une personne. C'est la différence entre une démo et quelque chose que vous laissez toucher un système réel.

Sorties structurées et outils, ensemble

Les versions précédentes imposaient un choix : soit appeler des outils, soit obtenir un objet structuré. AI SDK 6 permet à un agent de faire les deux. Vous attachez un schéma Output.object, l'agent appelle les outils au besoin, puis renvoie un résultat structuré et typé à la fin :

import { Output, ToolLoopAgent } from 'ai';
import { z } from 'zod';
 
const agent = new ToolLoopAgent({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { weather: weatherTool },
  output: Output.object({
    schema: z.object({
      summary: z.string(),
      temperature: z.number(),
      recommendation: z.string(),
    }),
  }),
});
 
const { output } = await agent.generate({
  prompt: 'Quel temps fait-il à San Francisco et comment dois-je m\'habiller ?',
});

Le output que vous récupérez est entièrement typé. Aucun parsing, aucune vérification défensive contre du JSON malformé — le SDK garantit la forme.

Support MCP, désormais stable

Le Model Context Protocol est la façon standard dont les agents atteignent les outils et les données externes. Dans AI SDK 6, le support MCP est passé en stable et a migré vers un paquet dédié @ai-sdk/mcp. Il couvre désormais l'authentification OAuth, les ressources, les invites et l'elicitation — les pièces nécessaires pour connecter un agent à de vrais systèmes à permissions, plutôt qu'à des points de terminaison jouets.

Sûreté de typage de bout en bout jusqu'à l'interface

Parce que les agents sont des objets définis, le SDK peut inférer leurs types de messages et porter ce typage jusqu'au frontend :

export type WeatherAgentUIMessage = InferAgentUIMessage<typeof weatherAgent>;

Cette seule ligne signifie que vos composants React savent exactement quelles parties un message diffusé peut contenir. Appels d'outils, résultats et texte sont tous typés à travers la frontière réseau — une garantie rare et réellement utile dans l'outillage IA.

Migrer depuis AI SDK 5

Si vous êtes en v5, la mise à niveau n'est pas une réécriture. Vercel fournit un codemod :

npx @ai-sdk/codemod v6

Il prend en charge automatiquement l'essentiel des renommages mécaniques. Prévoyez du temps pour tester vos boucles d'outils et tout streaming personnalisé, mais la migration est conçue pour se mesurer en heures, pas en semaines.

Pourquoi cela compte pour les équipes MENA

La propriété la plus stratégique de l'AI SDK n'a rien à voir avec les agents — c'est que la bibliothèque est neutre vis-à-vis du fournisseur. Le même appel generateText fonctionne avec Claude, GPT, Gemini ou un modèle ouvert derrière une passerelle, en changeant une seule chaîne. Pour les équipes en Tunisie, en Arabie saoudite et dans la région au sens large, c'est une couverture : contre les pannes de fournisseurs, contre les variations de prix, et contre les contraintes de souveraineté des données qui rendent un fournisseur étranger unique inenvisageable pour certaines charges. Écrivez votre agent une fois, routez-le vers un modèle qui satisfait vos exigences de latence, de coût et de conformité, et changez quand la réalité change.

AI SDK 6 prend cette base flexible et y ajoute la mécanique des agents — sans vous enfermer. Cette combinaison, plus que toute fonctionnalité isolée, est la raison pour laquelle il vaut la peine de l'adopter dès maintenant.


Vous créez des agents IA ou des produits pour votre entreprise ? Noqta aide les équipes MENA à livrer de l'IA en production sur une base neutre vis-à-vis du fournisseur. Contactez-nous.