Vercel AI SDK
El Vercel AI SDK llega a UberLLM a través de su proveedor
oficial @ai-sdk/openai-compatible. Cada modelo de chat en el
catálogo funciona con generateText y
streamText, y los modelos de imagen funcionan con generateImage.
Los ejemplos a continuación se ejecutaron contra la API en vivo con ai 7.0 y
@ai-sdk/openai-compatible 3.0.
Instalación
npm i ai @ai-sdk/openai-compatible zod
Crea una API key en Panel de control → Claves y
ponla en UBERLLM_API_KEY. Las cuentas empiezan en $0, así que añade crédito antes de la
primera llamada.
Configurar el proveedor
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 se envía como Authorization: Bearer <key>. Los IDs de modelo son los IDs en
uberllm.dev/models, por ejemplo
deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 o
openai/gpt-5.5.
Generar texto
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 es lo que costó la llamada, en dólares estadounidenses.
Streaming ```ts
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);
## Llamadas a herramientas
```ts
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 mayoría de los modelos de chat admiten herramientas. Una página de modelo en uberllm.dev indica cuándo uno no lo hace.
Imágenes
Los modelos de imagen usan uberllm.imageModel(...) con generateImage. El SDK pide b64_json, para que la imagen regrese en la respuesta.
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
Los IDs de imagen están listados bajo Imágenes en uberllm.dev/models. Los modelos de edición (IDs que terminan en -edit) toman POST /v1/images/edits, que @ai-sdk/openai-compatible no llama. Usa la llamada REST en Crear un video o imagen para esos.
Video y música
@ai-sdk/openai-compatible no tiene modelo de video o música. El video y la música son trabajos:
inicia uno con POST /v1/videos (o /v1/music), luego hazle un 'polling' o recibe un 'callback'. Consulta Crear un video o imagen, o deja que un agente lo haga a través del servidor MCP.
Precios
Cada llamada cuesta lo que su proveedor cobró por ella. UberLLM no cobra comisión en las solicitudes.
Añadir crédito con tarjeta cuesta 5.5% + $0.50. Para limitar lo que puede costar una llamada de chat, pasa
provider.max_price en el cuerpo de la solicitud a través de providerOptions:
await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Hi",
providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});
Consulta Precios y Modelos y enrutamiento.