Integraciones
Vercel AI SDK
Usa tu stack como el modelo detrás de generateText, streamText y las tools del Vercel AI SDK, con el provider compatible con OpenAI.
El Vercel AI SDK es un toolkit en TypeScript para llamar
modelos de lenguaje desde Node.js, Next.js y otros frameworks. Su provider
@ai-sdk/openai-compatible habla con cualquier endpoint compatible con
OpenAI, así que apunta a tu stack con una base URL y una clave.
Requisitos previos
- Una clave de la página Claves de API de tu stack, exportada como
STAC_API_KEY. Consulta Autenticación. - El id del modelo que quieres llamar — consulta Modelos.
Los ejemplos de abajo usan
qwen/qwen3.5-9b.
export STAC_API_KEY="your-stac-api-key"Configura el provider
Instala los paquetes
aies el SDK en sí;@ai-sdk/openai-compatiblees el provider.bashnpm install ai @ai-sdk/openai-compatibleCrea el provider
namesolo identifica el provider dentro del SDK (por ejemplo, enproviderOptions).apiKeyse envía comoAuthorization: Bearer <key>.stac.tstypescriptimport { createOpenAICompatible } from "@ai-sdk/openai-compatible"; export const stac = createOpenAICompatible({ name: "stac", baseURL: "https://api.trystac.com/v1", apiKey: process.env.STAC_API_KEY, });Llama al modelo
stac("qwen/qwen3.5-9b")devuelve un modelo de chat que puedes pasar a cualquier función del SDK.
Ejemplo
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText } from "ai";
const stac = createOpenAICompatible({
name: "stac",
baseURL: "https://api.trystac.com/v1",
apiKey: process.env.STAC_API_KEY,
});
const { text } = await generateText({
model: stac("qwen/qwen3.5-9b"),
prompt: "Name three primary colors.",
});
console.log(text);Salida esperada (la redacción cambia de una ejecución a otra):
Red, blue, and yellow.Para respuestas largas, prefiere streamText — consulta la nota sobre
timeouts más abajo:
import { streamText } from "ai";
const result = streamText({
model: stac("qwen/qwen3.5-9b"),
prompt: "Write a short paragraph about primary colors.",
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}Limitaciones
- El id del modelo debe estar en tu plan. Pasa a
stac(...)el valor exacto de Modelos; un modelo que el plan de tu clave no incluye devuelve403. - Las tools dependen del modelo.
toolsengenerateTextystreamTextsolo funcionan con un modelo que admite tool calling. - La salida estructurada usa el modo JSON. El provider solo envía un JSON
schema cuando se define
supportsStructuredOutputs: true; sin eso,generateObjectrecurre aresponse_format: { type: "json_object" }, que Stac soporta. - Las llamadas sin streaming tienen una ventana de tiempo.
generateTextespera la respuesta completa en una sola respuesta; una generación que pasa de unos 90 segundos falla con503. UsastreamTextpara salidas largas. - Una completación por solicitud,
logit_biasse descarta y el límite de tasa es por clave. Consulta Diferencias importantes.
Próximos pasos
- Compatibilidad OpenAI — con qué habla el provider y qué cambia respecto a OpenAI.
- Respuestas en streaming — el formato SSE detrás
de
streamText. - Errores y límites de uso — qué códigos de estado reintentar.