Accueil / Apprendre / Claude avec le Vercel AI SDK : createAnthropic baseURL, streaming et corrections
Vercel AI SDK. Une structure triangulaire en papier plié reliant une fenêtre de code à un ruban fluide de marques évoquant le texte d’une réponse, représentant la sortie d’une application en streaming.

Claude avec Vercel AI SDK : baseURL de createAnthropic, streaming et corrections

Le fournisseur Anthropic de l’AI SDK, @ai-sdk/anthropic, communique avec la Messages API. Son baseURL a pour valeur par défaut https://api.anthropic.com/v1, donc, pour une passerelle, vous remplacez ce préfixe entier, y compris /v1. OpenCode, Kilo Code et de nombreux frameworks d’agents utilisent ce même fournisseur en interne, ce qui explique pourquoi la même règle apparaît dans leurs configurations.

Installation

terminal
npm i ai @ai-sdk/anthropic

Créer le fournisseur

lib/anthropic.ts
import { createAnthropic } from '@ai-sdk/anthropic';

export const anthropic = createAnthropic({
  baseURL: 'https://aiprimetech.io/v1',                 // replaces https://api.anthropic.com/v1
  apiKey: process.env.AIPRIME_API_KEY,  // sent as x-api-key; defaults to ANTHROPIC_API_KEY
});
Il n’existe aucune variable d’environnement pour l’URL de base dans @ai-sdk/anthropic : passez baseURL dans le code. L’import simple de anthropic cible toujours le point de terminaison d’Anthropic.

generateText et streamText

generate.ts
import { generateText } from 'ai';
import { anthropic } from './lib/anthropic';

const { text, usage } = await generateText({
  model: anthropic('claude-sonnet-5'),
  prompt: 'Explain idempotency keys in two sentences.',
});
console.log(text, usage);
stream.ts
import { streamText } from 'ai';
import { anthropic } from './lib/anthropic';

const result = streamText({
  model: anthropic('claude-sonnet-5'),
  prompt: 'Write a haiku about load balancers.',
});

for await (const chunk of result.textStream) process.stdout.write(chunk);

Les deux appels acceptent maxRetries (2 par défaut) pour les erreurs temporaires telles que 429 et 5xx.

Raisonnement et mise en cache des prompts

Les options propres à Anthropic se placent dans providerOptions.anthropic. Les modèles actuels utilisent le raisonnement adaptatif :

thinking.ts
const { text } = await generateText({
  model: anthropic('claude-sonnet-5'),
  providerOptions: { anthropic: { thinking: { type: 'adaptive' } } },
  prompt: 'Plan a zero-downtime database migration in five steps.',
});

Mettez en cache un prompt système long et stable avec cacheControl ; les lectures du cache apparaissent ensuite dans usage.inputTokenDetails.cacheReadTokens. Les prompts dont la longueur est inférieure au minimum requis par le modèle ne sont pas mis en cache.

cache.ts
const result = await generateText({
  model: anthropic('claude-sonnet-5'),
  messages: [
    {
      role: 'system',
      content: longStableInstructions,
      providerOptions: { anthropic: { cacheControl: { type: 'ephemeral' } } },
    },
    { role: 'user', content: question },
  ],
});

L’alternative compatible OpenAI

La passerelle propose également le format OpenAI Chat Completions, donc @ai-sdk/openai-compatible fonctionne avec la même URL de base /v1 . C’est la voie à utiliser pour les modèles GPT avec la même clé ; pour Claude, le fournisseur natif ci-dessus conserve le raisonnement et le contrôle du cache.

lib/gateway.ts
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const gateway = createOpenAICompatible({
  name: 'aiprime',
  baseURL: 'https://aiprimetech.io/v1',
  apiKey: process.env.AIPRIME_API_KEY,
});

// gateway('claude-sonnet-5') or a GPT model ID

Dépannage

Ce que vous voyez Cause Solution
Une erreur d’analyse JSON, une réponse commençant par <baseURL sans /v1 : la requête a atteint le site webbaseURL: 'https://aiprimetech.io/v1'
404 page not found/v1 deux foisExactement un /v1
Invalid API keyprocess.env valeur non définie dans cet environnement d’exécution (les fonctions serverless et edge ont leur propre environnement), donc le SDK s’est rabattu sur ANTHROPIC_API_KEYDéfinissez la variable dans l’environnement du déploiement
Modèle non pris en chargeIdentifiant de modèle ancien ou mal orthographiéUtilisez un identifiant du tableau ci-dessous
Concurrency limit exceeded for userPromise.all sur un grand tableauLimitez les appels parallèles, par exemple avec p-limit
No available accounts / 503Capacité temporairement insuffisante en amontNouvelle tentative automatique ; augmentez maxRetries
Identifiant du modèle À utiliser pour
claude-sonnet-5Choix par défaut pour le développement et les tâches d’agents : rapide, performant, à prix intermédiaire.
claude-opus-5-5Raisonnement plus difficile, refactorisations importantes, longues exécutions d’agents.
claude-fable-5-1Le plus performant et le plus cher ; réservez-le aux tâches les plus difficiles.
claude-haiku-4-5Économique et rapide : titres, résumés, classification, petites étapes.

Questions fréquentes

Quelle est la valeur par défaut de baseURL dans @ai-sdk/anthropic ?
https://api.anthropic.com/v1. Une passerelle remplace le préfixe entier ; son URL doit donc se terminer par /v1, par exemple https://aiprimetech.io/v1.
Existe-t-il une variable d’environnement pour l’URL de base Anthropic de l’AI SDK ?
Non. Le fournisseur lit ANTHROPIC_API_KEY (ou ANTHROPIC_AUTH_TOKEN) dans l’environnement, mais l’URL de base se définit avec createAnthropic({ baseURL }).
Pourquoi l’AI SDK échoue-t-il avec une erreur d’analyse lors d’un appel à Claude ?
Généralement, il manque /v1 dans baseURL ; la requête atteint donc un site web et reçoit HTML au lieu de JSON.
Dois-je utiliser @ai-sdk/anthropic ou @ai-sdk/openai-compatible pour Claude ?
@ai-sdk/anthropic : il utilise la Messages API native, ce qui permet au raisonnement et à la mise en cache des prompts de fonctionner. Utilisez le fournisseur compatible OpenAI pour les modèles GPT.
Commencez à utiliser Claude en quelques minutes

Obtenez une clé API — aucun compte Anthropic ni inscription sur liste d’attente requis.

Obtenir votre clé API

AI Prime Tech est une passerelle API indépendante. Elle n’est ni affiliée à Anthropic, ni approuvée par Anthropic, ni revendeuse d’Anthropic. Claude et les noms de modèles associés sont des marques de leurs propriétaires respectifs.

Autres guides sur l’API Claude

Comment obtenir une clé API ClaudeComprendre la tarification de l’API ClaudeLa façon la moins chère d’utiliser l’API ClaudeCursor illimité avec l’API ClaudeAccès illimité à Claude CodePasserelle API Claude ou accès direct à AnthropicUtiliser Claude via une API compatible avec OpenAIComprendre les modèles Claude : comparaison de Claude Opus, Sonnet, Haiku et Fable — tous les modèles de l’API Claude, noms des modèles Anthropic et prix (2026)Payer l’API Claude en cryptomonnaiesAccéder à l’API Claude sans liste d’attenteComment réduire la consommation de tokens de ClaudeCline illimité avec l’API ClaudeRoo Code illimité avec l’API ClaudeClaude illimité dans les IDE JetBrainsUtiliser Aider sans limites avec l’API ClaudeClaude illimité dans VS CodeConfiguration d’OpenCode pour Claude : paramètres d’opencode.json, modèles et erreurs courantesExécuter un agent Hermes sans limites sur ClaudeUtiliser OpenClaw sans limites avec ClaudeCe que signifie une API compatible avec AnthropicClé API Claude Code — ANTHROPIC_API_KEY : comment l’obtenir, la configurer et quand utiliser claude setup-token à la placeCoûts de l’API Claude Code — Tarifs et moyens de les réduireLes erreurs de l’API Claude expliquées : erreur serveur 500, surcharge 529, limite de débit 429, requête incorrecte 400 — et le correctif pour chacuneComment acheter des crédits pour l’API Claude — et pourquoi un crédit Claude vaut mieux que toute offre d’« achat de compte Claude »API Claude gratuite : existe-t-il une clé API Claude gratuite, et qu’est-ce qui est réellement gratuit en 2026 ?API Claude ou abonnement Claude Pro/Max — Que choisirExécuter la CLI Codex sur ClaudeConnecter Claude à n8nRouter LiteLLM vers ClaudeUtiliser Claude dans Kilo CodeIntégrer Claude à GitHub CopilotConnecter Zed à Claude via la passerelleConnecter Cherry Studio à ClaudeChatAnthropic dans LangChain : importation, base_url, streaming, outils et erreursSDK Python Anthropic : installation, configuration de base_url, streaming et gestion des erreursUtiliser Factory Droid avec ClaudeL’API de Claude Code expliquéeIntégrer l’API Claude à votre applicationComment utiliser Claude sans limites — et pourquoi il n’existe pas de « Claude Code piraté »