Integrações

Vercel AI SDK

Use seu stack como o modelo por trás de generateText, streamText e tools no Vercel AI SDK, através do provider compatível com OpenAI.

O Vercel AI SDK é um toolkit em TypeScript para chamar modelos de linguagem a partir de Node.js, Next.js e outros frameworks. O provider @ai-sdk/openai-compatible conversa com qualquer endpoint compatível com OpenAI, então basta uma base URL e uma chave para apontá-lo para o seu stack.

Pré-requisitos

  • Uma chave da página Chaves de API do seu stack, exportada como STAC_API_KEY. Veja Autenticação.
  • O id do modelo que você quer chamar — veja Modelos. Os exemplos abaixo usam qwen/qwen3.5-9b.
bash
export STAC_API_KEY="your-stac-api-key"

Configure o provider

  1. Instale os pacotes

    ai é o SDK em si; @ai-sdk/openai-compatible é o provider.

    bash
    npm install ai @ai-sdk/openai-compatible
  2. Crie o provider

    name só identifica o provider dentro do SDK (por exemplo, em providerOptions). apiKey é enviada 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. Chame o modelo

    stac("qwen/qwen3.5-9b") devolve um modelo de chat que você pode passar para qualquer função do SDK.

Exemplo

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

Saída esperada (o texto muda de uma execução para outra):

Red, blue, and yellow.

Para respostas longas, prefira streamText — veja a observação sobre timeouts abaixo:

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

Limitações

  • O id do modelo precisa estar no seu plano. Passe para stac(...) o valor exato de Modelos; um modelo que o plano da sua chave não inclui devolve 403.
  • Tools dependem do modelo. tools em generateText e streamText só funcionam com um modelo que suporta tool calling.
  • Saída estruturada usa o modo JSON. O provider só envia um JSON schema quando supportsStructuredOutputs: true está definido; sem isso, o generateObject cai para response_format: { type: "json_object" }, que o Stac suporta.
  • Chamadas sem streaming têm uma janela de tempo. O generateText espera a resposta inteira de uma vez; uma geração que passa de cerca de 90 segundos falha com 503. Use streamText para saídas longas.
  • Uma completude por requisição, logit_bias é descartado e o rate limit é por chave. Veja Diferenças que importam.

Próximos passos