NieuwKoppel elke agent aan UberLLM: één sleutel, elk model, voor de catalogusprijs of minder.
UberLLM

Gebruik de Vercel AI SDK met UberLLM (goedkopere modellen, dezelfde code)

Installeer @ai-sdk/openai-compatible, maak een provider aan met baseURL https://api.uberllm.dev/v1 en je UberLLM key, en geef uberllm("<model id>") door waar je app vandaag een model doorgeeft. Verder verandert er niets in de app.

Stappen

  1. Maak een sleutel aan op je sleutels-pagina en voeg wat tegoed toe (accounts beginnen bij $0).
  2. Installeer de provider:
npm i ai @ai-sdk/openai-compatible
  1. Plaats de sleutel in .env.local (Next.js) of de omgeving van je server:
UBERLLM_API_KEY=ull_your_key
  1. Maak de provider één keer aan, bijvoorbeeld in lib/uberllm.ts:
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

export const uberllm = createOpenAICompatible({
  name: "uberllm",
  baseURL: "https://api.uberllm.dev/v1",
  apiKey: process.env.UBERLLM_API_KEY, // sent as Authorization: Bearer <key>
  includeUsage: true, // token counts on streamed answers too
});
  1. Gebruik deze waar je eerder een model gebruikte:
import { generateText } from "ai";
import { uberllm } from "@/lib/uberllm";

const { text } = await generateText({
  model: uberllm("deepseek/deepseek-v4.1-flash"),
  prompt: "Write a one-line welcome message.",
});

Een app verplaatsen die al gebruikmaakt van @ai-sdk/openai

Verwissel het model argument en houd al het andere hetzelfde:

// before
import { openai } from "@ai-sdk/openai";
const model = openai("gpt-4o");

// after
import { uberllm } from "@/lib/uberllm";
const model = uberllm("deepseek/deepseek-v4.1-flash");

Model-ID's zijn de ID's op uberllm.dev/models en hebben altijd een maker ervoor (openai/…, anthropic/…, deepseek/…). Zo kun je GPT, Claude, Gemini en open modellen draaien met één key en ze vergelijken door één string te wijzigen.

Een Next.js chatroute voor useChat

Standaard stuurt useChat van @ai-sdk/react naar /api/chat. Deze route beantwoordt dat:

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

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();
  const result = streamText({
    model: uberllm("deepseek/deepseek-v4.1-flash"),
    messages: await convertToModelMessages(messages),
  });
  return result.toUIMessageStreamResponse();
}

Bewaar de sleutel op de server. Plaats deze nooit in een NEXT_PUBLIC_ variabele: iedereen zou deze van de pagina kunnen lezen en je tegoed kunnen opmaken.

Beperk wat één oproep kan kosten

Chatverzoeken accepteren provider.max_price (dollars per miljoen tokens). Geef het door via providerOptions onder de provider name die je hebt gekozen:

await generateText({
  model: uberllm("deepseek/deepseek-v4.1-flash"),
  prompt: "Hi",
  providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});

Als niemand het model op dit moment onder die prijs verkoopt, wordt de oproep geweigerd met max_price_exceeded en wordt er niets in rekening gebracht.

Probleemoplossing

  • 401 invalid_api_key: de sleutel heeft de server niet bereikt. Herstart next dev na het bewerken van .env.local, en controleer of process.env.UBERLLM_API_KEY is ingesteld waar de code draait (server, niet de browser).
  • 402 insufficient_credits: voeg tegoed toe op de tegoedpagina.
  • 404 model_not_found: de ID is verkeerd of mist de maker. Kopieer deze van de modelpagina.
  • 400 wrong_endpoint: je hebt een afbeeldings- of videomodel doorgegeven aan streamText. Afbeeldingsmodellen gaan via uberllm.imageModel(…) met generateImage; video is een taak, zie Maak een video of afbeelding.
  • Gebruik is leeg bij streams: stel includeUsage: true in op de provider, zoals hierboven.

Lees verder

Goede modellen voor een app

Al deze ondersteunen tool calls. De eerste staat in de onderstaande code.

ModelModel-ID (plak dit)Prijs nu
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 invoer · $0.0014 uitvoer / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 invoer · $0.0900 uitvoer / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.1099 invoer · $0.5495 uitvoer / 1M
GPT-5.5openai/gpt-5.5$0.1250 invoer · $0.7500 uitvoer / 1M
Kimi K3moonshotai/kimi-k3$0.0010 invoer · $0.0788 uitvoer / 1M
GLM 5.3z-ai/glm-5.3$0.00070 invoer · $0.0141 uitvoer / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 invoer · $0.0020 uitvoer / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 invoer · $0.0188 uitvoer / 1M

Prijzen van de laatste uurlijkse update, zonder toeslag · alle modellen →

Veelgestelde vragen

Werkt de Vercel AI SDK met UberLLM?

Ja. Gebruik de officiële @ai-sdk/openai-compatible provider met baseURL https://api.uberllm.dev/v1 en je UberLLM key. generateText, streamText, useChat, tool calls en generateImage werken.

Heb ik @ai-sdk/openai of @ai-sdk/anthropic ook nodig?

Nee. Eén @ai-sdk/openai-compatible provider bereikt elk chatmodel op UberLLM, inclusief Claude, GPT en Gemini, via model id.

Kan ik video's maken met de AI SDK?

Niet via @ai-sdk/openai-compatible, die geen videomodel heeft. Video's zijn jobs op UberLLM: start er een met POST /v1/video/generations en controleer de status, zoals getoond in de media docs.