NeuVerbinde jeden Agenten mit UberLLM: ein Schlüssel, alle Modelle, zum Listenpreis oder günstiger.
UberLLM

Vercel AI SDK

Das Vercel AI SDK erreicht UberLLM über seinen offiziellen @ai-sdk/openai-compatible provider. Jedes Chat-Modell im catalog funktioniert mit generateText und streamText, und Bildmodelle funktionieren mit generateImage.

Die folgenden Beispiele wurden mit der Live-API mit ai 7.0 und @ai-sdk/openai-compatible 3.0 ausgeführt.

Installation

npm i ai @ai-sdk/openai-compatible zod

Erstellen Sie einen API-Schlüssel im Dashboard → Keys und fügen Sie ihn in UBERLLM_API_KEY ein. Konten starten ab $0,, fügen Sie daher Guthaben vor dem ersten Aufruf hinzu.

Den Anbieter einrichten

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 wird als Authorization: Bearer <key> gesendet. Modell-IDs sind die IDs auf uberllm.dev/models, zum Beispiel deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 oder openai/gpt-5.5.


Text generieren

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 hat der Anruf gekostet, in US-Dollar.

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

Tool-Aufrufe

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

Die meisten Chat-Modelle unterstützen Tools. Eine Modellseite auf uberllm.dev gibt an, wann dies nicht der Fall ist.

Bilder

Bildmodelle verwenden uberllm.imageModel(...) mit generateImage. Das SDK fragt nach b64_json, damit das Bild in der Antwort zurückkommt.

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

Bild-IDs sind unter Images auf uberllm.dev/models aufgeführt. Bearbeitungsmodelle (IDs, die auf -edit enden) benötigen POST /v1/images/edits, die @ai-sdk/openai-compatible nicht aufruft. Verwenden Sie den REST-Aufruf in Video oder Bild erstellen dafür.

Video und Musik

@ai-sdk/openai-compatible hat kein Video- oder Musikmodell. Video und Musik sind Aufträge: starten Sie einen mit POST /v1/videos (oder /v1/music), fragen Sie ihn dann ab oder erhalten Sie einen Callback. Sehen Sie Erstellen Sie ein Video oder Bild, oder lassen Sie es einen Agenten über den MCP-Server erledigen.

Preise

Jeder Aufruf kostet, was sein Anbieter dafür berechnet hat. Keine UberLLM-Gebühr für Anfragen. Guthaben per Karte aufladen kostet 5.5% + $0.50. Um die Kosten eines Chat-Aufrufs zu deckeln, übergeben Sie provider.max_price im request body über providerOptions:

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

Siehe Preise und Modelle & Routing.