Source: https://aiprimetech.io/fr/learn/use-claude-api-with-vercel-ai-sdk/ [Accueil](/fr/) / [Apprendre](/fr/learn/) / Claude avec le Vercel AI SDK : createAnthropic baseURL, streaming et corrections # 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 terminalCopier ``` npm i ai @ai-sdk/anthropic ``` ## Créer le fournisseur lib/anthropic.tsCopier ``` 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.tsCopier ``` 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.tsCopier ``` 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.tsCopier ``` 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.tsCopier ``` 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.tsCopier ``` 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 web | baseURL: 'https://aiprimetech.io/v1' | 404 page not found | /v1 deux fois | Exactement un /v1 | Invalid API key | process.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_KEY | Définissez la variable dans l’environnement du déploiement | Modèle non pris en charge | Identifiant de modèle ancien ou mal orthographié | Utilisez un identifiant du tableau ci-dessous | Concurrency limit exceeded for user | Promise.all sur un grand tableau | Limitez les appels parallèles, par exemple avec p-limit | No available accounts / 503 | Capacité temporairement insuffisante en amont | Nouvelle tentative automatique ; augmentez maxRetries | Identifiant du modèle | À utiliser pour | claude-sonnet-5 | Choix par défaut pour le développement et les tâches d’agents : rapide, performant, à prix intermédiaire. | claude-opus-5-5 | Raisonnement plus difficile, refactorisations importantes, longues exécutions d’agents. | claude-fable-5-1 | Le 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](/register) 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 Claude](/fr/learn/how-to-get-a-claude-api-key/)[Comprendre la tarification de l’API Claude](/fr/learn/claude-api-pricing-explained/)[La façon la moins chère d’utiliser l’API Claude](/fr/learn/cheapest-way-to-use-claude-api/)[Cursor illimité avec l’API Claude](/learn/use-claude-api-with-cursor/)[Accès illimité à Claude Code](/fr/learn/use-claude-api-with-claude-code/)[Passerelle API Claude ou accès direct à Anthropic](/fr/learn/claude-api-vs-anthropic-direct/)[Utiliser Claude via une API compatible avec OpenAI](/fr/learn/openai-compatible-claude-api/)[Comprendre 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)](/fr/learn/claude-api-models-compared/)[Payer l’API Claude en cryptomonnaies](/fr/learn/claude-api-with-crypto-payment/)[Accéder à l’API Claude sans liste d’attente](/fr/learn/claude-api-without-waitlist/)[Comment réduire la consommation de tokens de Claude](/fr/learn/how-to-reduce-claude-token-usage/)[Cline illimité avec l’API Claude](/fr/learn/use-claude-api-with-cline/)[Roo Code illimité avec l’API Claude](/fr/learn/use-claude-api-with-roo-code/)[Claude illimité dans les IDE JetBrains](/fr/learn/use-claude-api-with-jetbrains/)[Utiliser Aider sans limites avec l’API Claude](/fr/learn/use-claude-api-with-aider/)[Claude illimité dans VS Code](/fr/learn/use-claude-api-with-vscode/)[Configuration d’OpenCode pour Claude : paramètres d’opencode.json, modèles et erreurs courantes](/fr/learn/use-claude-api-with-opencode/)[Exécuter un agent Hermes sans limites sur Claude](/fr/learn/run-hermes-agent-with-claude-api/)[Utiliser OpenClaw sans limites avec Claude](/fr/learn/run-openclaw-with-claude-api/)[Ce que signifie une API compatible avec Anthropic](/fr/learn/anthropic-compatible-api/)[Clé API Claude Code — ANTHROPIC_API_KEY : comment l’obtenir, la configurer et quand utiliser claude setup-token à la place](/fr/learn/claude-code-api-key-setup/)[Coûts de l’API Claude Code — Tarifs et moyens de les réduire](/fr/learn/claude-code-api-costs/)[Les 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 chacune](/fr/learn/claude-api-errors-troubleshooting/)[Comment acheter des crédits pour l’API Claude — et pourquoi un crédit Claude vaut mieux que toute offre d’« achat de compte Claude »](/fr/learn/buy-claude-api-credits/)[API Claude gratuite : existe-t-il une clé API Claude gratuite, et qu’est-ce qui est réellement gratuit en 2026 ?](/fr/learn/claude-api-free-trial/)[API Claude ou abonnement Claude Pro/Max — Que choisir](/fr/learn/claude-api-vs-subscription/)[Exécuter la CLI Codex sur Claude](/fr/learn/use-claude-api-with-codex/)[Connecter Claude à n8n](/fr/learn/use-claude-api-with-n8n/)[Router LiteLLM vers Claude](/fr/learn/use-claude-api-with-litellm/)[Utiliser Claude dans Kilo Code](/fr/learn/use-claude-api-with-kilo-code/)[Intégrer Claude à GitHub Copilot](/fr/learn/use-claude-api-with-github-copilot/)[Connecter Zed à Claude via la passerelle](/fr/learn/use-claude-api-with-zed/)[Connecter Cherry Studio à Claude](/fr/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic dans LangChain : importation, base_url, streaming, outils et erreurs](/fr/learn/use-claude-api-with-langchain/)[SDK Python Anthropic : installation, configuration de base_url, streaming et gestion des erreurs](/fr/learn/anthropic-python-sdk/)[Utiliser Factory Droid avec Claude](/fr/learn/use-claude-api-with-factory-droid/)[L’API de Claude Code expliquée](/fr/learn/claude-code-api/)[Intégrer l’API Claude à votre application](/fr/learn/claude-api-integration/)[Comment utiliser Claude sans limites — et pourquoi il n’existe pas de « Claude Code piraté »](/fr/learn/get-unlimited-claude-usage/)