
Claude con Vercel AI SDK: baseURL di createAnthropic, streaming e soluzioni ai problemi
Il provider Anthropic di AI SDK, @ai-sdk/anthropic, comunica con la Messages API. Il suo baseURL ha come valore predefinito https://api.anthropic.com/v1, quindi per un gateway devi sostituire l'intero prefisso, incluso /v1. OpenCode, Kilo Code e molti framework per agenti usano internamente lo stesso provider, motivo per cui la stessa regola compare nelle loro configurazioni.
Installazione
npm i ai @ai-sdk/anthropicCrea il provider
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: passa baseURL nel codice. La semplice importazione di anthropic punta sempre all'endpoint di Anthropic.generateText e 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);Entrambe le chiamate accettano maxRetries (2 per impostazione predefinita) per errori transitori come 429 e 5xx.
Ragionamento e memorizzazione dei prompt nella cache
Le opzioni specifiche di Anthropic vanno in providerOptions.anthropic. I modelli attuali usano il ragionamento adattivo:
const { text } = await generateText({
model: anthropic('claude-sonnet-5'),
providerOptions: { anthropic: { thinking: { type: 'adaptive' } } },
prompt: 'Plan a zero-downtime database migration in five steps.',
});Memorizza nella cache un prompt di sistema lungo e stabile con cacheControl; le letture dalla cache compaiono poi in usage.inputTokenDetails.cacheReadTokens. I prompt più brevi della lunghezza minima prevista dal modello non vengono memorizzati nella 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'alternativa compatibile con OpenAI
Il gateway supporta anche il formato OpenAI Chat Completions, quindi @ai-sdk/openai-compatible funziona con lo stesso URL di base /v1 . È la soluzione per usare i modelli GPT con la stessa chiave; per Claude, il provider nativo descritto sopra mantiene il ragionamento e il controllo della 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 IDRisoluzione dei problemi
| Che cosa vedi | Causa | Soluzione |
|---|---|---|
Un errore di parsing di JSON, con una risposta che inizia con < | baseURL senza /v1: la richiesta è arrivata al sito web | baseURL: 'https://aiprimetech.io/v1' |
404 page not found | /v1 due volte | Esattamente un /v1 |
Invalid API key | process.env valore non definito in quell'ambiente di esecuzione (le funzioni serverless ed edge hanno un proprio ambiente), quindi l'SDK ha usato come ripiego ANTHROPIC_API_KEY | Imposta la variabile nell'ambiente di distribuzione |
| Modello non supportato | ID del modello obsoleto o scritto in modo errato | Usa un ID della tabella seguente |
Concurrency limit exceeded for user | Promise.all su un array di grandi dimensioni | Limita le chiamate parallele, ad esempio con p-limit |
No available accounts / 503 | Capacità temporaneamente limitata del servizio a monte | Nuovo tentativo automatico; aumenta maxRetries |
| ID del modello | Usalo per |
|---|---|
claude-sonnet-5 | Scelta predefinita per programmazione e attività degli agenti: veloce, potente, di fascia media. |
claude-opus-5-5 | Ragionamenti più complessi, refactoring estesi, esecuzioni prolungate degli agenti. |
claude-fable-5-1 | Il più capace e il più costoso; riservalo alle attività più difficili. |
claude-haiku-4-5 | Economico e rapido: titoli, riepiloghi, classificazione, piccoli passaggi. |
Domande frequenti
Qual è il baseURL predefinito di @ai-sdk/anthropic?
Esiste una variabile d'ambiente per l'URL di base del provider Anthropic di AI SDK?
Perché AI SDK restituisce un errore di parsing quando chiama Claude?
Dovrei usare @ai-sdk/anthropic o @ai-sdk/openai-compatible per Claude?
Ottieni una chiave API: non servono un account Anthropic né una lista d'attesa.
Ottieni la tua chiave APIAI Prime Tech è un gateway API indipendente. Non è affiliato ad Anthropic, non è approvato da Anthropic e non è un suo rivenditore. Claude e i nomi dei modelli correlati sono marchi dei rispettivi proprietari.