NieuwKoppel elke agent aan UberLLM: één sleutel, elk model, voor de catalogusprijs of minder.
UberLLM

Gebruik de OpenAI Python SDK en LangChain met een goedkopere API (UberLLM)

Stel base_url="https://api.uberllm.dev/v1" en api_key in op je UberLLM sleutel in OpenAI(...) of ChatOpenAI(...), geef vervolgens elke UberLLM model-ID door. Chat, streaming, tool calls en JSON output blijven werken; je andere code blijft hetzelfde.

Stappen (OpenAI Python SDK)

  1. Maak een sleutel aan op je sleutels-pagina en voeg tegoed toe.
  2. Sla het op als een environment variable:
export UBERLLM_API_KEY=ull_your_key
  1. Laat de client naar UberLLM wijzen:
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)

Dat is de hele wijziging. client.chat.completions.create met stream=True, tools, response_format, temperature en max_tokens werkt zoals voorheen. De async client (AsyncOpenAI) accepteert dezelfde twee argumenten.

Zonder de code aan te raken

De OpenAI SDK leest ook twee environment variables, dus een script dat OpenAI() aanroept zonder argumenten kan worden verplaatst zonder het te bewerken:

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

Je moet nog steeds de model= string wijzigen naar een UberLLM id zoals deepseek/deepseek-v4.1-flash.

Stappen (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 en .stream() werken ongewijzigd. Geef base_url door in de code in plaats van te vertrouwen op omgevingsvariabelen: het argument wint altijd, dus een verdwaalde OPENAI_API_BASE op de machine kan geen oproepen elders naartoe sturen.

LangChain.js is hetzelfde idee:

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" },
});

Kies een goedkoper model voor elke taak

Het idee achter één sleutel voor elk model is dat je kunt stoppen met het betalen van topprijzen voor eenvoudig werk. Een veelvoorkomende verdeling:

  • Complex redeneren of klantgerichte antwoorden: een topmodel zoals deepseek/deepseek-v4.1-flash.
  • Bulk samenvattingen, tagging, extraction: google/gemma-3-27b-it of een ander model uit de onderstaande batchtabel, vaak 50 tot 100 keer goedkoper per token.

Verander alleen de model= string om van het ene naar het andere over te schakelen.

Wat er niet is

UberLLM biedt chat completions (/v1/chat/completions), de Responses API (client.responses.create, streaming en tool calls inbegrepen) en de Anthropic messages route. Het bewaart geen status tussen aanroepen, stuur daarom de hele conversatie in input in plaats van previous_response_id (Responses API referentie). Het biedt geen embeddings of de Assistants API: houd die aanroepen bij hun huidige provider.

Problemen oplossen

  • openai.AuthenticationError (401): de key is verkeerd of leeg. Print len(os.environ["UBERLLM_API_KEY"]); een key is ull_ plus 43 tekens.
  • openai.NotFoundError (404) op /responses of /embeddings: die routes bestaan hier niet, zie hierboven.
  • model_not_found: id's in OpenAI-stijl zoals gpt-4o hebben de maker ervoor nodig: openai/gpt-4o.
  • openai.RateLimitError (429): de limiet per minuut van de key (standaard 300). Verhoog die op de keys-pagina, of voeg retries met backoff toe.
  • 402 insufficient_credits: waardeer je saldo op via de creditspagina.

Lees verder

Modellen om mee te beginnen

De eerste staat in de onderstaande code. Elk accepteert tool calls.

ModelModel-ID (plak dit)Prijs nu
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00022 invoer · $0.0025 uitvoer / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 invoer · $0.0900 uitvoer / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.1096 invoer · $0.5482 uitvoer / 1M
GPT-5.5openai/gpt-5.5$0.1250 invoer · $0.7500 uitvoer / 1M
Kimi K3moonshotai/kimi-k3$0.0010 invoer · $0.0788 uitvoer / 1M
GLM 5.3z-ai/glm-5.3$0.00025 invoer · $0.0114 uitvoer / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 invoer · $0.0020 uitvoer / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 invoer · $0.0188 uitvoer / 1M

Prijzen van de laatste uurlijkse update, zonder toeslag · alle modellen →

Voor grote batch-taken

Laagste prijs per token voor samenvatten, taggen en extraheren in grote volumes.

ModelModel-ID (plak dit)Prijs nu
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 invoer · $0.0020 uitvoer / 1M
GPT-OSS 120Bopenai/gpt-oss-120b$0.000069 invoer · $0.00030 uitvoer / 1M
DeepSeek V3.2deepseek/deepseek-v3.2$0.0026 invoer · $0.0039 uitvoer / 1M
Qwen 3 235B A22B Instruct 2507qwen/qwen3-235b-a22b-2507$0.00057 invoer · $0.0035 uitvoer / 1M
Gemini 3.1 Flash Litegoogle/gemini-3.1-flash-lite$0.0025 invoer · $0.0149 uitvoer / 1M
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00022 invoer · $0.0025 uitvoer / 1M

Prijzen van de laatste uurlijkse update, zonder toeslag · alle modellen →

Veelgestelde vragen

Kan ik de officiële OpenAI Python SDK met UberLLM gebruiken?

Ja. Geef base_url="https://api.uberllm.dev/v1" en je UberLLM-sleutel door aan OpenAI(), of stel OPENAI_BASE_URL en OPENAI_API_KEY in. chat.completions met streaming, tools en JSON-uitvoer werkt voor elk chatmodel.

Werkt LangChain met UberLLM?

Ja. ChatOpenAI van langchain-openai accepteert base_url en api_key; chains, agents en tool binding werken ongewijzigd met elk UberLLM chatmodel.

Ondersteunt UberLLM embeddings of de Responses API?

De Responses API wel, embeddings niet. UberLLM ondersteunt /v1/chat/completions, /v1/responses (client.responses.create, zonder previous_response_id: stuur het hele gesprek bij elke aanroep) en de Anthropic /v1/messages route. Houd embeddings bij hun huidige provider.