Inicio / Aprende / Claude con Vercel AI SDK: createAnthropic baseURL, streaming y soluciones
Vercel AI SDK. Una estructura triangular de papel plegado que conecta una ventana de código con una cinta fluida de trazos similares a texto de respuesta y representa la salida de una aplicación en streaming.

Claude con Vercel AI SDK: baseURL de createAnthropic, streaming y soluciones

El proveedor Anthropic de AI SDK, @ai-sdk/anthropic, se comunica con la Messages API. Su baseURL tiene como valor predeterminado https://api.anthropic.com/v1, así que, para una pasarela, debes sustituir todo ese prefijo, incluido /v1. OpenCode, Kilo Code y muchos frameworks de agentes utilizan este mismo proveedor internamente, por lo que la misma regla aparece en sus configuraciones.

Instalación

terminal
npm i ai @ai-sdk/anthropic

Crear el proveedor

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
});
No hay ninguna variable de entorno para la URL base en @ai-sdk/anthropic: pasa baseURL en el código. La importación directa de anthropic siempre apunta al endpoint propio de Anthropic.

generateText y 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);

Ambas llamadas aceptan maxRetries (2 de forma predeterminada) para fallos transitorios como 429 y 5xx.

Razonamiento y almacenamiento de prompts en caché

Las opciones específicas de Anthropic se incluyen en providerOptions.anthropic. Los modelos actuales utilizan razonamiento adaptativo:

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.',
});

Almacena en caché un prompt del sistema largo y estable con cacheControl; las lecturas de caché aparecerán entonces en usage.inputTokenDetails.cacheReadTokens. Los prompts que no alcanzan la longitud mínima del modelo no se almacenan en caché.

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 },
  ],
});

La alternativa compatible con OpenAI

La pasarela también ofrece el formato de Chat Completions de OpenAI, por lo que @ai-sdk/openai-compatible funciona con la misma URL base /v1 . Es la vía para los modelos GPT con la misma clave; para Claude, el proveedor nativo anterior conserva el razonamiento y el control de la caché.

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

Resolución de problemas

Lo que ves Causa Solución
Un error de análisis de JSON, con una respuesta que empieza por <baseURL sin /v1: la solicitud llegó al sitio webbaseURL: 'https://aiprimetech.io/v1'
404 page not found/v1 dos vecesExactamente un /v1
Invalid API keyprocess.env valor no definido en ese entorno de ejecución (las funciones serverless y edge tienen su propio entorno), por lo que el SDK recurrió a ANTHROPIC_API_KEYConfigura la variable en el entorno del despliegue
Modelo no compatibleID de modelo antiguo o mal escritoUtiliza un ID de la tabla siguiente
Concurrency limit exceeded for userPromise.all sobre una matriz grandeLimita las llamadas en paralelo, por ejemplo, con p-limit
No available accounts / 503Limitación temporal de capacidad del proveedorSe reintenta automáticamente; aumenta maxRetries
ID del modelo Úsalo para
claude-sonnet-5Opción predeterminada para programación y trabajo con agentes: rápida, potente y de precio intermedio.
claude-opus-5-5Razonamiento más complejo, refactorizaciones grandes y ejecuciones largas de agentes.
claude-fable-5-1El más capaz y el más caro; resérvalo para las tareas más difíciles.
claude-haiku-4-5Económico y rápido: títulos, resúmenes, clasificación y pasos pequeños.

Preguntas frecuentes

¿Cuál es el valor predeterminado de baseURL en @ai-sdk/anthropic?
https://api.anthropic.com/v1. Una pasarela sustituye todo el prefijo, por lo que debe terminar en /v1, por ejemplo, https://aiprimetech.io/v1.
¿Hay una variable de entorno para la URL base del proveedor Anthropic de AI SDK?
No. El proveedor lee ANTHROPIC_API_KEY (o ANTHROPIC_AUTH_TOKEN) del entorno, pero la URL base se establece con createAnthropic({ baseURL }).
¿Por qué AI SDK falla con un error de análisis al llamar a Claude?
Normalmente, a baseURL le falta /v1, por lo que la solicitud llega a un sitio web y recibe HTML en lugar de JSON.
¿Debería usar @ai-sdk/anthropic o @ai-sdk/openai-compatible para Claude?
@ai-sdk/anthropic: se comunica mediante la Messages API nativa, por lo que funcionan el razonamiento y el almacenamiento de prompts en caché. Usa el proveedor compatible con OpenAI para los modelos GPT.
Empieza a usar Claude en minutos

Obtén una clave de API: no necesitas una cuenta de Anthropic ni estar en una lista de espera.

Obtén tu clave de API

AI Prime Tech es una pasarela de API independiente. No está afiliada a Anthropic, no cuenta con su respaldo ni es un distribuidor de Anthropic. Claude y los nombres de los modelos relacionados son marcas comerciales de sus respectivos propietarios.

Más guías de la API de Claude

Cómo obtener una clave de API de ClaudePrecios de la API de Claude, explicadosLa forma más económica de usar la API de ClaudeCursor ilimitado con la API de ClaudeAcceso ilimitado a Claude CodeGateway de la API de Claude frente al acceso directo a AnthropicUsar Claude a través de una API compatible con OpenAILos modelos de Claude explicados: una comparación de Claude Opus, Sonnet, Haiku y Fable; todos los modelos de la API de Claude, nombres de modelos de Anthropic y precios (2026)Pagar la API de Claude con criptomonedasAcceso a la API de Claude sin lista de esperaCómo reducir el uso de tokens de ClaudeCline ilimitado con la API de ClaudeRoo Code ilimitado con la API de ClaudeClaude ilimitado en los IDE de JetBrainsAider sin límites con la API de ClaudeClaude ilimitado en VS CodeConfiguración de OpenCode para Claude: ajustes de opencode.json, modelos y errores comunesEjecutar un agente Hermes sin límites con ClaudeEjecutar OpenClaw sin límites con ClaudeQué significa una API compatible con AnthropicClave API de Claude Code — ANTHROPIC_API_KEY: cómo obtenerla, configurarla y cuándo usar claude setup-token en su lugarCostes de la API de Claude Code: precios y cómo reducirlosExplicación de los errores de la API de Claude: error del servidor 500, sobrecarga 529, límite de solicitudes 429, solicitud incorrecta 400 y la solución para cada unoCómo comprar créditos para la API de Claude y por qué un crédito de Claude es mejor que cualquier oferta de «comprar una cuenta de Claude»API gratuita de Claude: ¿existe una clave API de Claude gratuita y qué es realmente gratis en 2026?API de Claude frente a la suscripción Claude Pro/Max: cuál elegirEjecutar la CLI de Codex con ClaudeConectar Claude a n8nEnrutar LiteLLM a ClaudeUsar Claude en Kilo CodeIntegra Claude en GitHub CopilotConecta Zed a Claude a través de la pasarelaConecta Cherry Studio a ClaudeChatAnthropic en LangChain: importación, base_url, streaming, herramientas y erroresSDK de Python de Anthropic: instalación, configuración de base_url, streaming y gestión de erroresEjecuta Factory Droid con ClaudeLa API de Claude Code, explicadaIntegración de la API de Claude en tu aplicaciónCómo usar Claude sin límites y por qué no existe un «Claude Code crackeado»