Source: https://aiprimetech.io/es/learn/use-claude-api-with-vercel-ai-sdk/ [Inicio](/es/) / [Aprende](/es/learn/) / Claude con Vercel AI SDK: createAnthropic baseURL, streaming y soluciones # 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 terminalCopiar ``` npm i ai @ai-sdk/anthropic ``` ## Crear el proveedor lib/anthropic.tsCopiar ``` 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.tsCopiar ``` 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.tsCopiar ``` 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.tsCopiar ``` 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.tsCopiar ``` 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.tsCopiar ``` 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 web | baseURL: 'https://aiprimetech.io/v1' | 404 page not found | /v1 dos veces | Exactamente un /v1 | Invalid API key | process.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_KEY | Configura la variable en el entorno del despliegue | Modelo no compatible | ID de modelo antiguo o mal escrito | Utiliza un ID de la tabla siguiente | Concurrency limit exceeded for user | Promise.all sobre una matriz grande | Limita las llamadas en paralelo, por ejemplo, con p-limit | No available accounts / 503 | Limitación temporal de capacidad del proveedor | Se reintenta automáticamente; aumenta maxRetries | ID del modelo | Úsalo para | claude-sonnet-5 | Opción predeterminada para programación y trabajo con agentes: rápida, potente y de precio intermedio. | claude-opus-5-5 | Razonamiento más complejo, refactorizaciones grandes y ejecuciones largas de agentes. | claude-fable-5-1 | El más capaz y el más caro; resérvalo para las tareas más difíciles. | claude-haiku-4-5 | Econó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](/register) 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 Claude](/es/learn/how-to-get-a-claude-api-key/)[Precios de la API de Claude, explicados](/es/learn/claude-api-pricing-explained/)[La forma más económica de usar la API de Claude](/es/learn/cheapest-way-to-use-claude-api/)[Cursor ilimitado con la API de Claude](/learn/use-claude-api-with-cursor/)[Acceso ilimitado a Claude Code](/es/learn/use-claude-api-with-claude-code/)[Gateway de la API de Claude frente al acceso directo a Anthropic](/es/learn/claude-api-vs-anthropic-direct/)[Usar Claude a través de una API compatible con OpenAI](/es/learn/openai-compatible-claude-api/)[Los 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)](/es/learn/claude-api-models-compared/)[Pagar la API de Claude con criptomonedas](/es/learn/claude-api-with-crypto-payment/)[Acceso a la API de Claude sin lista de espera](/es/learn/claude-api-without-waitlist/)[Cómo reducir el uso de tokens de Claude](/es/learn/how-to-reduce-claude-token-usage/)[Cline ilimitado con la API de Claude](/es/learn/use-claude-api-with-cline/)[Roo Code ilimitado con la API de Claude](/es/learn/use-claude-api-with-roo-code/)[Claude ilimitado en los IDE de JetBrains](/es/learn/use-claude-api-with-jetbrains/)[Aider sin límites con la API de Claude](/es/learn/use-claude-api-with-aider/)[Claude ilimitado en VS Code](/es/learn/use-claude-api-with-vscode/)[Configuración de OpenCode para Claude: ajustes de opencode.json, modelos y errores comunes](/es/learn/use-claude-api-with-opencode/)[Ejecutar un agente Hermes sin límites con Claude](/es/learn/run-hermes-agent-with-claude-api/)[Ejecutar OpenClaw sin límites con Claude](/es/learn/run-openclaw-with-claude-api/)[Qué significa una API compatible con Anthropic](/es/learn/anthropic-compatible-api/)[Clave API de Claude Code — ANTHROPIC_API_KEY: cómo obtenerla, configurarla y cuándo usar claude setup-token en su lugar](/es/learn/claude-code-api-key-setup/)[Costes de la API de Claude Code: precios y cómo reducirlos](/es/learn/claude-code-api-costs/)[Explicació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 uno](/es/learn/claude-api-errors-troubleshooting/)[Có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»](/es/learn/buy-claude-api-credits/)[API gratuita de Claude: ¿existe una clave API de Claude gratuita y qué es realmente gratis en 2026?](/es/learn/claude-api-free-trial/)[API de Claude frente a la suscripción Claude Pro/Max: cuál elegir](/es/learn/claude-api-vs-subscription/)[Ejecutar la CLI de Codex con Claude](/es/learn/use-claude-api-with-codex/)[Conectar Claude a n8n](/es/learn/use-claude-api-with-n8n/)[Enrutar LiteLLM a Claude](/es/learn/use-claude-api-with-litellm/)[Usar Claude en Kilo Code](/es/learn/use-claude-api-with-kilo-code/)[Integra Claude en GitHub Copilot](/es/learn/use-claude-api-with-github-copilot/)[Conecta Zed a Claude a través de la pasarela](/es/learn/use-claude-api-with-zed/)[Conecta Cherry Studio a Claude](/es/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic en LangChain: importación, base_url, streaming, herramientas y errores](/es/learn/use-claude-api-with-langchain/)[SDK de Python de Anthropic: instalación, configuración de base_url, streaming y gestión de errores](/es/learn/anthropic-python-sdk/)[Ejecuta Factory Droid con Claude](/es/learn/use-claude-api-with-factory-droid/)[La API de Claude Code, explicada](/es/learn/claude-code-api/)[Integración de la API de Claude en tu aplicación](/es/learn/claude-api-integration/)[Cómo usar Claude sin límites y por qué no existe un «Claude Code crackeado»](/es/learn/get-unlimited-claude-usage/)