Vercel AI SDK v7 évalué : excellente couche applicative TypeScript, pas une plateforme AI complète
Vercel AI SDK est un toolkit TypeScript indépendant du fournisseur pour ajouter des fonctions AI aux applications web et Node.js. AI SDK Core normalise génération, sortie structurée et tools ; AI SDK UI fournit hooks et protocole de données ; les packages provider traduisent les appels vers chaque API. Le repository actuel exige Node.js 22 ou plus et utilise Apache License 2.0.
La référence de cette revue est [email protected], publié le 19 août 2026. Vercel entretient aussi des branches v5 et v6. Un tutoriel peut donc être valide historiquement sans décrire v7. Les agents actuels utilisent ToolLoopAgent et stopWhen. useChat a adopté une architecture de transport dès v5 et ne gère plus son input state en interne. Le lockfile est la source de vérité.
Il faut séparer les produits. Le SDK open source peut appeler directement un provider. Vercel AI Gateway est un service hébergé distinct de routage, facturation et budgets. AI Elements est une bibliothèque optionnelle de composants shadcn/ui. Hosting et Observability de Vercel Cloud sont également séparés. Tout appeler « AI SDK » masque flux de données, prix et dépendance.
État en 2026
| Élément | État vérifié | Impact |
|---|---|---|
| Version principale | [email protected] (2026-08-19) | figer le major |
| Runtime | Node.js 22+ | vérifier le runtime |
| Licence | Apache-2.0 | conditions séparées |
| Core API | generateText / streamText / tools | comportement différent |
| Agent API | ToolLoopAgent; 20 steps par défaut | budget explicite |
| UI | React / Vue / Svelte / Angular | auth/état à construire |
| Route par défaut | Gateway dans les exemples actuels | provider direct possible |
| Télémétrie | OpenTelemetry expérimental opt-in | export sensible |
Ce qui appartient au SDK — et ce qui est séparé
| Couche | Apport | Limite à gérer |
|---|---|---|
| AI SDK Core | generation, stream, tools, structured output | sémantique et usage provider |
| Provider packages | API adapter / special options | version et parité |
| AI SDK UI | hooks / transports / rich streams | auth, persistance, erreurs |
| ToolLoopAgent | loop / approval / stop | pas un runtime durable |
| MCP | tools / resources / prompts | confiance et autorisation |
| AI Elements | optional UI components | pas Core |
| AI Gateway | hosted route / budget / fallback | plan de données séparé |
| Vercel Cloud | hosting / observability | service distinct |
Abstraction fournisseur, streaming et boucle agent
L’abstraction fournisseur fonctionne bien sur le dénominateur commun : texte, messages, tool calls, résultats structurés et usage normalisé. Elle ne rend pas les modèles interchangeables. Reasoning, tokens cachés, fichiers, images, hosted tools, refus de sécurité, identifiants, erreurs et options varient. Conservez providerMetadata, finish reason brut et warnings dans les tests. Sans matrice de capacités, une interface portable reporte simplement les différences au moment de l’incident en production.
Le streaming possède deux niveaux. streamText produit les parties modèle et outil côté serveur ; AI SDK UI les transporte comme messages riches. Un flux texte est simple, mais ne porte ni tool calls, ni usage, ni finish reasons. La production exige des états explicites pour abort, retry, résultat partiel, event dupliqué, déconnexion, reconnexion et erreur serveur. Le premier token ne prouve ni la cohérence de l’état final ni celle de la facturation.
ToolLoopAgent est une boucle pratique, pas un runtime durable. Elle s’arrête quand le modèle ne réclame plus d’outil, quand execute manque, lorsqu’une approbation est requise ou qu’une condition stop intervient. Vingt étapes par défaut peuvent coûter trop cher. Fixez une limite plus petite par tâche, timeout global, AbortSignal, budget tokens/argent et droits des tools. Paiements, validations et synchronisations répétables appartiennent à un workflow déterministe ; l’agent doit se limiter aux décisions réellement ambiguës.
Migration et évaluation pour la production
- Figer Node.js,
ai, UI et providers dans le lockfile ; noter major et release notes. - Inventorier prompts, messages, options provider, tool schemas, stream, retries, stockage et billing.
- Créer une matrice tool calling, structured output, reasoning, fichiers, safety, usage, contexte et région.
- Préparer golden set expurgé et attaques injection, arguments invalides, droits refusés et actions dupliquées.
- Entourer generateText/streamText d’un adapter fin ; laisser visibles les options spécifiques.
- Ajouter auth serveur, autorisation tenant, allowlist, approvals, idempotence, timeouts et budgets.
- Observer mesures normalisées et warnings/finish reasons bruts ; ne pas exporter de payload sensible sans règle.
- Faire shadow puis canary ; comparer qualité, intégrité stream, tools, latence et facture.
- Tester abort, déconnexion, retry et panne Gateway/provider ; garder l’ancien adapter jusqu’au test rollback.
- Relancer la régression après changement de major, adapter, modèle, prompt, tool ou routing.
Mesures avant de changer de fournisseur
| Mesure | Test | Importance |
|---|---|---|
| Answer quality | rubric + blind pairwise | API ≠ modèle |
| Structured output | schema + semantic accuracy | JSON valide peut être faux |
| Tool behavior | selection / args / approval / duplicates | risque d’effets |
| Stream integrity | first/final/order/reconnect/cancel | client et serveur divergent |
| Latency | p50/p95 first + complete | routing change UX |
| Cost | tokens + invoice | comptage différent |
| Safety | injection / exfiltration / permission | output non fiable |
| Reliability | timeout / error / rollback | les échecs comptent |
Une migration ne commence pas par changer un import. Inventoriez appels, system prompts, messages, schemas, events streaming, retries, champs d’usage et options spécifiques. Conservez des traces de production représentatives après redaction. Le golden set inclut demandes normales, contexte long, langues, refus, arguments mal formés, tools parallèles, erreur provider, stream interrompu, questions sans réponse et prompt injection. Exécutez ancien et nouveau chemins sur les mêmes inputs et gardez données normalisées et brutes.
Séparez les mesures : qualité, validité du schema, choix du bon tool, exécution et fidélité finale ne forment pas une note unique. Ajoutez temps au premier event, latence totale, tokens input/output/cache, coût de facture, succès de cancel et terminaison du stream. Pour les agents, mesurez étapes, appels répétés, approbations, timeouts et effets dupliqués. Commencez en shadow, poursuivez par un canary tenant/trafic et gardez adapter et protocole précédents jusqu’au rollback testé.
L’intégration OpenTelemetry est utile, mais officiellement expérimentale et activée appel par appel via experimental_telemetry. Elle peut inclure prompts, texte de réponse, tool calls et attributs. Traitez-la comme un export de données : redaction, cardinalité, sampling, rétention et accès doivent être réglés. L’Observability hébergée de Vercel est un autre produit ; installer ai ne crée pas une suite d’évaluation, un trace store ou un processus d’incident.
Sécurité, confidentialité, coût et dépendance
| Risque | Contrôle | Limite restante |
|---|---|---|
| Prompt injection | instruction/data separation + allowlist | model may follow hostile content |
| Unauthorized action | server identity/tenant authorization | schema is not access control |
| Duplicate action | idempotency + transaction log | retry may repeat |
| Runaway cost | stopWhen + time/token/step budget | 20 steps is not a business budget |
| Telemetry leak | redact/sample/retention/access | prompts can be exported |
| Gateway drift | pin provider/model/region | fallback changes reproducibility |
| Version mismatch | pin every AI SDK package | old tutorials remain visible |
| False portability | capability matrix/regression | common type ≠ same semantics |
Vercel AI SDK face aux alternatives
| Option | Choisir si | Écart |
|---|---|---|
| Vercel AI SDK v7 | TypeScript streaming / multi-provider UI | strong ergonomics; governance external |
| OpenAI Node SDK | OpenAI-native features | minimal translation; provider coupling |
| LangChain JS | integrations / middleware / agents | larger abstraction surface |
| LangGraph JS | durable state / checkpoints / interrupts | more orchestration; better resume |
| OpenAI Agents SDK TS | handoffs / guardrails / tracing | agent and OpenAI centered |
| Custom/provider SDK | one provider / full protocol control | build UI, tools, portability |
| AI SDK + Gateway | unified budget / routing / fallback | adds Vercel data plane |
La sécurité se construit surtout au-dessus du SDK. Zod ou JSON Schema vérifie la forme d’un argument, pas le droit de rembourser, de lire un autre tenant ou d’envoyer un mail. Résolvez identité et tenant côté serveur, autorisez chaque appel, minimisez credentials, validez outputs et auditez. Les effets exigent une idempotency key et les actions critiques une approbation. Documents récupérés, pages web, réponses MCP et outputs précédents restent des données non fiables susceptibles de prompt injection.
Routing et fallback automatiques de Gateway améliorent la disponibilité, mais peuvent changer comportement, processeur, région et prix. Pour compliance ou reproductibilité, fixez provider/model/region ou limitez les routes. Comme photographie datée, la page de février 2026 indiquait crédits mensuels gratuits, PAYG sans markup token et BYOK sans frais Gateway ; vérifiez la page active. L’appel direct réduit cette frontière Vercel, mais impose de construire budgets, fallback et agrégation d’usage.
Notre verdict : AI SDK v7 est une excellente couche applicative pour une équipe TypeScript livrant une UI streaming et plusieurs modèles. Types, protocole et primitives réduisent le glue code. Ce n’est pas le meilleur centre pour des processus multi-agents longs et reprenables ; LangGraph ou un moteur de workflows apporte une meilleure durabilité. Si les fonctions natives d’un provider dominent, son SDK direct est plus transparent. L’ergonomie justifie l’adoption, pas la promesse imaginaire d’une portabilité, sécurité et exploitation gratuites.
Questions fréquentes
Le SDK est-il gratuit et open source ?
Le repository est Apache-2.0. Providers, modèles, AI Gateway, Vercel Cloud et autres services ont leurs propres prix et conditions.
Vercel hosting est-il obligatoire ?
Non. C’est une bibliothèque TypeScript pour Node.js. Gateway est un défaut pratique des exemples actuels, pas une obligation.
Quelle version est actuelle ?
Au 20-08-2026, la principale est [email protected] ; v5/v6 restent maintenues, donc vérifiez le lockfile.
Gateway fait-il partie du SDK open source ?
Non. C’est un service hébergé distinct de routage et facturation ; le SDK peut appeler directement les providers.
ToolLoopAgent est-il sûr seul ?
Non. Il faut authorization, allowlist, approval, idempotence, timeout, stop conditions, audit et tests adversariaux.
L’abstraction garantit-elle la même sortie ?
Non. Elle normalise des formes communes ; comportement, options, usage, erreurs, safety et features diffèrent.
Text stream ou UI message stream ?
Le texte suffit à une interface simple ; tools, usage, finish reason et rich parts exigent le protocole UI.
Telemetry peut-elle envoyer les prompts ?
Oui selon la configuration. Définissez redaction, sampling, rétention et accès avant l’opt-in expérimental.
Quand choisir LangGraph ?
Lorsque exécution durable, état persistant, interrupts, longue durée et reprise sont essentiels.
Comment migrer sans casser le chat ?
Version pin, golden/failure suite, shadow, canary, contrat streaming et adapter de rollback testé.
Sources et vérification
- AI SDK repository
- AI SDK releases
- Apache 2.0 license
- Core: generateText and streamText
- Tool calling
- ToolLoopAgent reference
- AI SDK UI transports
- AI SDK stream protocol
- MCP integration
- OpenTelemetry integration
- Vercel AI Gateway overview
- AI Gateway pricing
- AI Elements component library
- LangGraph JavaScript overview
- OpenAI Node SDK
- OpenAI Agents SDK for TypeScript
Revue indépendante du 20 août 2026. Versions, providers, defaults et prix changent vite ; vérifiez packages installés et pages officielles actives.