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.
bash
export STAC_API_KEY="your-stac-api-key"

Configura el provider

  1. Instala los paquetes

    ai es el SDK en sí; @ai-sdk/openai-compatible es el provider.

    bash
    npm install ai @ai-sdk/openai-compatible
  2. Crea el provider

    name solo identifica el provider dentro del SDK (por ejemplo, en providerOptions). apiKey se envía como Authorization: Bearer <key>.

    stac.tstypescript
    import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
     
    export const stac = createOpenAICompatible({
      name: "stac",
      baseURL: "https://api.trystac.com/v1",
      apiKey: process.env.STAC_API_KEY,
    });
  3. Llama al modelo

    stac("qwen/qwen3.5-9b") devuelve un modelo de chat que puedes pasar a cualquier función del SDK.

Ejemplo

index.tstypescript
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:

typescript
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 devuelve 403.
  • Las tools dependen del modelo. tools en generateText y streamText solo 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, generateObject recurre a response_format: { type: "json_object" }, que Stac soporta.
  • Las llamadas sin streaming tienen una ventana de tiempo. generateText espera la respuesta completa en una sola respuesta; una generación que pasa de unos 90 segundos falla con 503. Usa streamText para salidas largas.
  • Una completación por solicitud, logit_bias se descarta y el límite de tasa es por clave. Consulta Diferencias importantes.

Próximos pasos