
Claude com o Vercel AI SDK: baseURL de createAnthropic, streaming e correções
O provedor Anthropic do AI SDK, @ai-sdk/anthropic, comunica-se com a Messages API. Seu baseURL tem como valor padrão https://api.anthropic.com/v1, então, para um gateway, você substitui todo esse prefixo, incluindo /v1. OpenCode, Kilo Code e muitos frameworks de agentes usam esse mesmo provedor internamente, por isso a mesma regra aparece em suas configurações.
Instalação
npm i ai @ai-sdk/anthropicCrie o provedor
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: passe baseURL no código. A importação simples de anthropic sempre aponta para o endpoint da própria 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);Ambas as chamadas aceitam maxRetries (2 por padrão) para falhas transitórias, como 429 e 5xx.
Raciocínio e cache de prompts
As opções específicas da Anthropic ficam em providerOptions.anthropic. Os modelos atuais usam raciocínio adaptativo:
const { text } = await generateText({
model: anthropic('claude-sonnet-5'),
providerOptions: { anthropic: { thinking: { type: 'adaptive' } } },
prompt: 'Plan a zero-downtime database migration in five steps.',
});Armazene em cache um prompt de sistema longo e estável com cacheControl; as leituras do cache passam então a aparecer em usage.inputTokenDetails.cacheReadTokens. Prompts abaixo do comprimento mínimo do modelo não são armazenados em cache.
const result = await generateText({
model: anthropic('claude-sonnet-5'),
messages: [
{
role: 'system',
content: longStableInstructions,
providerOptions: { anthropic: { cacheControl: { type: 'ephemeral' } } },
},
{ role: 'user', content: question },
],
});A alternativa compatível com OpenAI
O gateway também oferece o formato OpenAI Chat Completions, então @ai-sdk/openai-compatible funciona com a mesma /v1 URL base. Essa é a opção para modelos GPT com a mesma chave; para Claude, o provedor nativo acima preserva o raciocínio e o controle de 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 IDSolução de problemas
| O que você vê | Causa | Correção |
|---|---|---|
Um erro de análise de JSON, com a resposta começando por < | baseURL sem /v1: a solicitação chegou ao site | baseURL: 'https://aiprimetech.io/v1' |
404 page not found | /v1 duas vezes | Exatamente um /v1 |
Invalid API key | process.env com valor indefinido nesse ambiente de execução (funções serverless e de borda têm suas próprias variáveis de ambiente), então o SDK recorreu a ANTHROPIC_API_KEY | Defina a variável no ambiente da implantação |
| Modelo não compatível | ID do modelo antigo ou digitado incorretamente | Use um ID da tabela abaixo |
Concurrency limit exceeded for user | Promise.all sobre uma lista grande | Limite as chamadas paralelas, por exemplo, com p-limit |
No available accounts / 503 | Capacidade temporária do serviço de origem | A tentativa é repetida automaticamente; aumente maxRetries |
| ID do modelo | Use para |
|---|---|
claude-sonnet-5 | Padrão para programação e trabalho com agentes: rápido, eficiente e de preço intermediário. |
claude-opus-5-5 | Raciocínio mais complexo, grandes refatorações e execuções longas de agentes. |
claude-fable-5-1 | O mais capaz e mais caro; reserve-o para as tarefas mais difíceis. |
claude-haiku-4-5 | Barato e rápido: títulos, resumos, classificação e pequenas etapas. |
Perguntas frequentes
Qual é a baseURL padrão de @ai-sdk/anthropic?
Existe uma variável de ambiente para a URL base do provedor Anthropic do AI SDK?
Por que o AI SDK falha com um erro de análise ao chamar o Claude?
Devo usar @ai-sdk/anthropic ou @ai-sdk/openai-compatible para Claude?
Obtenha uma chave de API — sem precisar de conta na Anthropic nem de lista de espera.
Obtenha sua chave de APIAI Prime Tech é um gateway de API independente. Não tem afiliação com a Anthropic, não é endossado por ela e não é seu revendedor. Claude e os nomes dos modelos relacionados são marcas comerciais de seus respectivos proprietários.