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

Use o OpenAI Python SDK e LangChain com uma API mais barata (UberLLM)

Defina base_url="https://api.uberllm.dev/v1" e api_key para sua chave UberLLM em OpenAI(...) ou ChatOpenAI(...), então passe qualquer ID de modelo UberLLM. Chat, streaming, chamadas de ferramentas (tool calls) e saída JSON continuam funcionando; seu outro código permanece o mesmo.

Passos (OpenAI Python SDK)

  1. Crie uma chave na sua página de chaves e adicione crédito.
  2. Salve-a como uma variável de ambiente:
export UBERLLM_API_KEY=ull_your_key
  1. Aponte o cliente para o UberLLM:
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uberllm.dev/v1",
    api_key=os.environ["UBERLLM_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)

Essa é a única alteração. client.chat.completions.create com stream=True, tools, response_format, temperature e max_tokens funciona como antes. O cliente assíncrono (AsyncOpenAI) aceita os mesmos dois argumentos.

Sem tocar no código

O OpenAI SDK também lê duas variáveis de ambiente, então um script que chama OpenAI() sem argumentos pode ser movido sem edição:

export OPENAI_BASE_URL=https://api.uberllm.dev/v1
export OPENAI_API_KEY=ull_your_key
python your_script.py

Você ainda precisa alterar a string model= para um ID do UberLLM como deepseek/deepseek-v4.1-flash.

Passos (LangChain)

pip install langchain-openai
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="deepseek/deepseek-v4.1-flash",
    base_url="https://api.uberllm.dev/v1",
    api_key=os.environ["UBERLLM_API_KEY"],
)
print(llm.invoke("Say hello in one sentence.").content)

Chains, agents, bind_tools e .stream() funcionam sem alterações. Passe base_url no código em vez de depender de variáveis de ambiente: o argumento sempre prevalece, então um OPENAI_API_BASE perdido na máquina não pode enviar chamadas para outro lugar.

LangChain.js é a mesma ideia:

import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "deepseek/deepseek-v4.1-flash",
  apiKey: process.env.UBERLLM_API_KEY,
  configuration: { baseURL: "https://api.uberllm.dev/v1" },
});

Escolha um modelo mais barato para cada tarefa

O objetivo de uma chave para cada modelo é que você pode parar de pagar preços de modelos de ponta por tarefas simples. Uma divisão comum:

  • Raciocínio complexo ou respostas diretas ao cliente: um modelo de ponta como deepseek/deepseek-v4.1-flash.
  • Resumos em massa, marcação, extração: google/gemma-3-27b-it ou outro modelo da tabela de lote abaixo, muitas vezes 50 a 100 vezes mais barato por token.

Mude apenas a string model= para alternar entre um e outro.

O que não está incluído

UberLLM oferece chat completions (/v1/chat/completions), a Responses API (client.responses.create, incluindo streaming e tool calls) e a rota de mensagens da Anthropic. Não mantém estado entre as chamadas, portanto, envie a conversa completa em input em vez de previous_response_id (Referência da Responses API](](/docs/responses))). Não oferece embeddings ou a Assistants API: mantenha essas chamadas no seu provedor atual.

Solução de Problemas

  • openai.AuthenticationError (401): a chave está errada ou vazia. Imprima len(os.environ["UBERLLM_API_KEY"]); uma chave tem ull_ mais 43 caracteres.
  • openai.NotFoundError (404) em /responses ou /embeddings: essas rotas não existem aqui, veja acima.
  • model_not_found: IDs no estilo OpenAI como gpt-4o precisam do fabricante na frente: openai/gpt-4o.
  • openai.RateLimitError (429): o limite por minuto da chave (300 por padrão). Aumente-o na página de chaves, ou adicione retentativas com backoff.
  • 402 insufficient_credits: adicione créditos na página de créditos.

Continue lendo

Modelos para começar

O primeiro está no código abaixo. Cada um aceita tool calls.

ModeloID do modelo (cole isto)Preço agora
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 entrada · $0.0014 saída / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 entrada · $0.0900 saída / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.1077 entrada · $0.5387 saída / 1M
GPT-5.5openai/gpt-5.5$0.1250 entrada · $0.7500 saída / 1M
Kimi K3moonshotai/kimi-k3$0.0017 entrada · $0.0781 saída / 1M
GLM 5.3z-ai/glm-5.3$0.00079 entrada · $0.0140 saída / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 entrada · $0.0020 saída / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 entrada · $0.0188 saída / 1M

Preços da última atualização de hora em hora, sem taxa adicional · todos os modelos →

Para grandes jobs em lote

Preço mais baixo por token para sumarização, marcação e extração em volume.

ModeloID do modelo (cole isto)Preço agora
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 entrada · $0.0020 saída / 1M
GPT-OSS 120Bopenai/gpt-oss-120b$0.000069 entrada · $0.00030 saída / 1M
DeepSeek V3.2deepseek/deepseek-v3.2$0.0026 entrada · $0.0039 saída / 1M
Qwen 3 235B A22B Instruct 2507qwen/qwen3-235b-a22b-2507$0.00057 entrada · $0.0035 saída / 1M
Gemini 3.1 Flash Litegoogle/gemini-3.1-flash-lite$0.0025 entrada · $0.0149 saída / 1M
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 entrada · $0.0014 saída / 1M

Preços da última atualização de hora em hora, sem taxa adicional · todos os modelos →

Perguntas frequentes

Posso usar o SDK oficial do Python da OpenAI com UberLLM?

Sim. Passe base_url="https://api.uberllm.dev/v1" e sua chave UberLLM para OpenAI(), ou defina OPENAI_BASE_URL e OPENAI_API_KEY. chat.completions com streaming, ferramentas e saída JSON funciona para todos os modelos de chat.

LangChain funciona com UberLLM?

Sim. ChatOpenAI de langchain-openai aceita base_url e api_key; chains, agents e tool binding funcionam inalterados com qualquer modelo de chat UberLLM.

UberLLM suporta embeddings ou a API de Respostas?

A API de Responses sim, embeddings não. UberLLM serve /v1/chat/completions, /v1/responses (client.responses.create, sem previous_response_id: envie a conversa completa a cada chamada) e a rota Anthropic /v1/messages. Mantenha os embeddings no seu provedor atual.