NovoConecte qualquer agente ao UberLLM: uma chave, todos os modelos, pelo preço de tabela ou menos.
UberLLM

Vercel AI SDK

O Vercel AI SDK acessa o UberLLM através do seu provedor oficial @ai-sdk/openai-compatible. Todos os modelos de chat no catálogo funcionam com generateText e streamText, e modelos de imagem funcionam com generateImage.

Os exemplos abaixo foram executados na API ao vivo com ai 7.0 e @ai-sdk/openai-compatible 3.0.

Instalar

npm i ai @ai-sdk/openai-compatible zod

Crie uma API key em Dashboard → Keys e coloque-a em UBERLLM_API_KEY. Contas começam com $0,, então adicione crédito antes da primeira chamada.

Configurar o provedor

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 é enviado como Authorization: Bearer <key>. Os IDs dos modelos são os IDs em uberllm.dev/models, por exemplo deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 ou openai/gpt-5.5.

Gerar 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 é o custo da chamada, em dólares americanos.

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);

Chamadas de ferramentas

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);

A maioria dos modelos de chat aceita ferramentas. Uma página de modelo em uberllm.dev indica quando um não aceita.

Imagens

Modelos de imagem usam uberllm.imageModel(...) com generateImage. O SDK pede b64_json, então a imagem retorna na resposta.

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

Os IDs de imagem estão listados em Imagens em uberllm.dev/models. Modelos de edição (IDs terminando em -edit) usam POST /v1/images/edits, que @ai-sdk/openai-compatible não chama. Use a chamada REST em Criar um vídeo ou imagem para esses.

Vídeo e música

@ai-sdk/openai-compatible não tem modelo de vídeo ou música. Vídeo e música são trabalhos: inicie um com POST /v1/videos (ou /v1/music), depois faça polling ou receba um callback. Veja Crie um vídeo ou imagem, ou deixe um agente fazer isso através do servidor MCP.

Preços

Cada chamada custa o que seu provedor cobrou por ela. O UberLLM não cobra taxa sobre as requisições. Adicionar crédito com cartão custa 5.5% + $0.50. Para limitar o custo de uma chamada de chat, passe provider.max_price no corpo da requisição através de providerOptions:

await generateText({
  model: uberllm("deepseek/deepseek-v4-flash"),
  prompt: "Hi",
  providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});

Confira Preços e Modelos e roteamento.