Vercel AI SDK
El AI SDK de Vercel es el kit estándar para crear funciones de IA en TypeScript. Apunta su proveedor @ai-sdk/openai-compatible a Synthorai y todo el catálogo queda disponible con una sola clave, con las familias Claude, GPT, Gemini y open-weight en paralelo.
Antes de empezar
Crea una clave de API en Consola → API Keys. Cópiala de inmediato: solo se muestra una vez.
Paso 1 - Instalar los paquetes
npm i ai @ai-sdk/openai-compatible Synthorai habla el formato Chat Completions de OpenAI, así que no hace falta ningún paquete específico de Synthorai: el proveedor oficial compatible con OpenAI es la vía admitida.
Paso 2 - Crear la instancia del proveedor
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
const synthorai = createOpenAICompatible({
name: 'synthorai',
baseURL: 'https://synthorai.io/v1',
apiKey: process.env.SYNTHORAI_API_KEY,
}); El valor name es una etiqueta que se usa en trazas y mensajes de error; no afecta al enrutamiento. El enrutamiento lo deciden baseURL y el identificador de modelo que pases.
La URL base debe terminar en /v1. El proveedor añade rutas como /chat/completions por lo que sin eso la petición acaba en la ruta equivocada.
Paso 3 - Generar y transmitir texto
import { generateText } from 'ai';
const { text } = await generateText({
model: synthorai('claude-sonnet-5-5'),
prompt: 'Tell me about yourself in one sentence.',
});
console.log(text); El primer argumento es un identificador de modelo del catálogo. El streaming funciona con la misma instancia, sin configuración adicional:
import { streamText } from 'ai';
const result = streamText({
model: synthorai('claude-sonnet-5-5'),
prompt: 'Write a short haiku about routing.',
});
for await (const textPart of result.textStream) {
process.stdout.write(textPart);
} Elegir un modelo
Cualquier identificador del catálogo sirve. Estos son valores por defecto razonables:
| Parámetro | Tipo | Descripción |
|---|---|---|
claude-opus-5-5 | agentic | Una opción sólida para sesiones agénticas largas y edición de código. |
gpt-5.4 | reasoning | Razonamiento de propósito general en cargas mixtas. |
gpt-5.4-mini | fast | Rápido y económico: bueno para clasificación y completions cortas. |
deepseek-v4-flash | cheapest | Uno de los modelos más económicos del catálogo, adecuado para grandes volúmenes. |
Usar la superficie de Anthropic
La misma clave también sirve el formato Anthropic Messages en otra ruta, a la que el AI SDK llega mediante su proveedor de Anthropic. Úsalo para funciones nativas de Anthropic y el proveedor compatible con OpenAI de arriba para todo lo demás.
import { createAnthropic } from '@ai-sdk/anthropic';
const synthoraiAnthropic = createAnthropic({
baseURL: 'https://synthorai.io/v1',
apiKey: process.env.SYNTHORAI_API_KEY,
}); Ojo con la diferencia respecto al SDK nativo de Anthropic: ese toma la raíz del host y añade /v1/messages por su cuenta, mientras que el proveedor Anthropic del AI SDK espera un prefijo que ya contenga /v1. Pasar solo el host lleva a la ruta equivocada.
Solución de problemas
404 en todas las llamadas. La URL base debe terminar en /v1. El proveedor añade rutas como /chat/completions por lo que sin eso la petición acaba en la ruta equivocada.
401 Unauthorized. La variable de entorno se lee al cargar el módulo, así que una clave exportada después de arrancar el proceso no se tendrá en cuenta. Reinicia el proceso tras definirla.
Modelo no encontrado. Los identificadores de modelo distinguen mayúsculas y minúsculas y deben coincidir exactamente con el catálogo. Lista lo que alcanza tu clave con: curl https://synthorai.io/v1/models -H "Authorization: Bearer $SYNTHORAI_API_KEY"
Cada identificador de modelo y su precio están en la model price comparison.