Vercel AI SDK
De Vercel AI SDK bereikt UberLLM via zijn officiële
@ai-sdk/openai-compatible provider. Elk chatmodel in de
catalogus werkt met generateText en
streamText, en beeldmodellen werken met generateImage.
De onderstaande voorbeelden zijn uitgevoerd met de live API met ai 7.0 en
@ai-sdk/openai-compatible 3.0.
Installeren
npm i ai @ai-sdk/openai-compatible zod
Maak een API key aan in Dashboard → Keys en zet deze in UBERLLM_API_KEY. Accounts beginnen bij $0,, dus voeg tegoed toe voordat je de eerste aanroep doet.
De aanbieder instellen
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
export const uberllm = createOpenAICompatible({
name: "uberllm",
apiKey: process.env.UBERLLM_API_KEY,
baseURL: "https://api.uberllm.dev/v1",
includeUsage: true, // token usage on streamed responses too
});
apiKey wordt verzonden als Authorization: Bearer <key>. Model-ID's zijn de ID's op
uberllm.dev/models, bijvoorbeeld
deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 of
openai/gpt-5.5.
Genereer tekst
import { generateText } from "ai";
const { text, usage } = await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Say hello in one short sentence.",
});
console.log(text, usage);
usage.raw.cost_usd is wat de oproep kost, in Amerikaanse dollars.
Stream
import { streamText } from "ai";
const result = streamText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Count from 1 to 5.",
});
for await (const delta of result.textStream) {
process.stdout.write(delta);
}
console.log(await result.usage);
Functieaanroepen
import { generateText, tool, stepCountIs } from "ai";
import { z } from "zod";
const { text, steps } = await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
tools: {
weather: tool({
description: "Get the current temperature in a city, in Celsius",
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, celsius: 21 }),
}),
},
stopWhen: stepCountIs(3), // call the tool, then answer
prompt: "What is the temperature in Paris right now?",
});
console.log(text);
De meeste chatmodellen ondersteunen tools. Een modelpagina op uberllm.dev geeft aan wanneer een model dit niet doet.
Afbeeldingen
Afbeeldingsmodellen gebruiken uberllm.imageModel(...) met generateImage. De SDK vraagt
om b64_json, zodat de afbeelding terugkomt in het antwoord.
import { generateImage } from "ai";
const { image } = await generateImage({
model: uberllm.imageModel("black-forest-labs/flux.2-klein-4b"),
prompt: "A red bicycle on a white background",
size: "1024x1024",
});
// image.uint8Array holds the PNG
Afbeeldings-ID's staan vermeld onder Afbeeldingen op uberllm.dev/models.
Bewerkingsmodellen (ID's die eindigen op -edit) nemen POST /v1/images/edits, die
@ai-sdk/openai-compatible niet aanroept. Gebruik de REST call in
Maak een video of afbeelding daarvoor.
Video en muziek
@ai-sdk/openai-compatible heeft geen video- of muziekmodel. Video en muziek zijn taken:
start er een met POST /v1/videos (of /v1/music), poll het dan of ontvang een
callback. Bekijk Maak een video of afbeelding, of laat een agent het doen via
de MCP server.
Prijzen
Elke aanroep kost wat de provider ervoor in rekening bracht. Geen UberLLM-kosten op aanvragen.
Krediet toevoegen met een kaart kost 5.5% + $0.50. Om een maximum te stellen aan wat een chat-aanroep kan kosten, geef
provider.max_price door in de request body via providerOptions:
await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Hi",
providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});
Zie Prijzen en Modellen & routing.