Vercel AI SDK
Il Vercel AI SDK raggiunge UberLLM tramite il suo provider ufficiale
@ai-sdk/openai-compatible. Ogni modello di chat nel
catalogo funziona con generateText e
streamText, e i modelli di immagine funzionano con generateImage.
Gli esempi seguenti sono stati eseguiti sull'API live con ai 7.0 e
@ai-sdk/openai-compatible 3.0.
Installazione
npm i ai @ai-sdk/openai-compatible zod
Crea una API key in Dashboard → Chiavi e inseriscila in UBERLLM_API_KEY. Gli account partono da $0, quindi aggiungi credito prima della prima chiamata.
Configura il fornitore
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 viene inviato come Authorization: Bearer <key>. Gli ID dei modelli sono gli ID su
uberllm.dev/models, ad esempio
deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 o
openai/gpt-5.5.
Genera testo
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 è quanto è costata la chiamata, in dollari USA.
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);
Chiamate a strumenti
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 maggior parte dei modelli di chat supporta strumenti. Una pagina del modello su uberllm.dev indica quando uno non li supporta.
Immagini
I modelli di immagini usano uberllm.imageModel(...) con generateImage. L'SDK chiede
b64_json, quindi l'immagine torna nella risposta.
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
Gli ID delle immagini sono elencati sotto Immagini su uberllm.dev/models.
I modelli di modifica (ID che terminano con -edit) richiedono POST /v1/images/edits, che
@ai-sdk/openai-compatible non chiama. Usa la chiamata REST in
Crea un video o un'immagine per quelli.
Video e musica
@ai-sdk/openai-compatible non ha un modello video o musicale. Video e musica sono lavori:
avviane uno con POST /v1/videos (o /v1/music), poi interrogalo o ricevi una
callback. Vedi Crea un video o un'immagine, o lascia che un agente lo faccia tramite
il server MCP.
Prezzi
Ogni chiamata costa quanto il suo provider ha addebitato per essa. Nessuna commissione UberLLM sulle richieste.
Aggiungere credito con carta costa 5.5% + $0.50. Per limitare il costo di una chiamata di chat, passa
provider.max_price nel corpo della richiesta tramite providerOptions:
await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Hi",
providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});
Vedi Prezzi e Modelli e routing.