Menu: Vercel AI SDK

Guides

Vercel AI SDK

Use Scalaix as an OpenAI-compatible provider in the AI SDK.

Install

npm install ai @ai-sdk/openai-compatible

Create the provider

lib/scalaix.ts
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

export const scalaix = createOpenAICompatible({
  name: "scalaix",
  baseURL: "https://www.scalaix.com/v1",
  apiKey: process.env.SCALAIX_API_KEY,
  includeUsage: true,
});

Generate and stream text

import { generateText, streamText } from "ai";
import { scalaix } from "@/lib/scalaix";

const { text, usage } = await generateText({
  model: scalaix("gpt-4o-mini"),
  prompt: "Write a one-line release note for a caching feature.",
});

const result = streamText({
  model: scalaix("auto"),
  prompt: "Explain exponential backoff to a new engineer.",
});
for await (const delta of result.textStream) process.stdout.write(delta);

In a Next.js route handler

app/api/chat/route.ts
import { convertToModelMessages, streamText, type UIMessage } from "ai";
import { scalaix } from "@/lib/scalaix";

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();
  const result = streamText({
    model: scalaix("claude-3-5-haiku-latest"),
    messages: convertToModelMessages(messages),
  });
  return result.toUIMessageStreamResponse();
}

The key stays on the server; the browser talks to your route.

Structured output

import { generateObject } from "ai";
import { z } from "zod";

const { object } = await generateObject({
  model: scalaix("gpt-4o-mini"),
  schema: z.object({ title: z.string(), tags: z.array(z.string()) }),
  prompt: "Suggest a title and tags for a post about API versioning.",
});