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.