NovitàCollega qualsiasi agente a UberLLM: una chiave, tutti i modelli, a prezzo di listino o meno.
UberLLM

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.