
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
npm i ai @ai-sdk/anthropicCréer le fournisseur
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
});@ai-sdk/anthropic : passez baseURL dans le code. L’import simple de anthropic cible toujours le point de terminaison d’Anthropic.generateText et streamText
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);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 :
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.
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.
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 IDDé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 ?
Existe-t-il une variable d’environnement pour l’URL de base Anthropic de l’AI SDK ?
Pourquoi l’AI SDK échoue-t-il avec une erreur d’analyse lors d’un appel à Claude ?
Dois-je utiliser @ai-sdk/anthropic ou @ai-sdk/openai-compatible pour Claude ?
Obtenez une clé API — aucun compte Anthropic ni inscription sur liste d’attente requis.
Obtenir votre clé APIAI 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.