NuevoConecta cualquier agente a UberLLM: una clave, todos los modelos, a precio de lista o menos.
UberLLM

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.