NouveauBranchez n’importe quel agent sur UberLLM : une clé, tous les modèles, au prix catalogue ou moins.
UberLLM

Vercel AI SDK

Le Vercel AI SDK accède à UberLLM via son fournisseur officiel @ai-sdk/openai-compatible. Chaque modèle de chat du catalogue fonctionne avec generateText et streamText, et les modèles d'image fonctionnent avec generateImage.

Les exemples ci-dessous ont été exécutés sur l'API en direct avec ai 7.0 et @ai-sdk/openai-compatible 3.0.

Installation

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

Créez une clé API dans Tableau de bord → Clés et insérez-la dans UBERLLM_API_KEY. Les comptes commencent à $0,, donc ajoutez du crédit avant le premier appel.

Configurer le fournisseur

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 est envoyé comme Authorization: Bearer <key>. Les identifiants de modèle sont les identifiants sur uberllm.dev/models](uberllm.dev/models](https://uberllm.dev/models)), par exemple deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 ou openai/gpt-5.5.

Générer du texte

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 est le coût de l'appel, en dollars américains.

Streaming

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

Appels d'outils

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

La plupart des modèles de chat prennent en charge les outils. Une page de modèle sur uberllm.dev indique quand ce n'est pas le cas.

Images

Les modèles d'images utilisent uberllm.imageModel(...) avec generateImage. Le SDK demande b64_json, pour que l'image soit renvoyée dans la réponse.

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

Les identifiants d'images sont listés sous Images sur uberllm.dev/models. Les modèles d'édition (identifiants se terminant par -edit) prennent POST /v1/images/edits, que @ai-sdk/openai-compatible n'appelle pas. Utilisez l'appel REST dans Faire une vidéo ou une image pour ceux-là.

Vidéo et musique

@ai-sdk/openai-compatible n'a pas de modèle de vidéo ou de musique. La vidéo et la musique sont des tâches : démarrez-en une avec POST /v1/videos (ou /v1/music), puis interrogez-la ou obtenez un callback. Voir Créer une vidéo ou une image, ou laissez un agent le faire via le serveur MCP.

Prix

Chaque appel coûte le prix facturé par son fournisseur. Aucuns frais UberLLM sur les requêtes. L'ajout de crédit par carte coûte 5.5% + $0.50. Pour plafonner le coût d'un appel de chat, passez provider.max_price dans le corps de la requête via providerOptions :

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

Voir Tarifs et Modèles et routage.