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)
- Maak een sleutel aan op je sleutels-pagina en voeg tegoed toe.
- Sla het op als een environment variable:
export UBERLLM_API_KEY=ull_your_key
- 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-itof 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. Printlen(os.environ["UBERLLM_API_KEY"]); een key isull_plus 43 tekens.openai.NotFoundError(404) op/responsesof/embeddings: die routes bestaan hier niet, zie hierboven.model_not_found: id's in OpenAI-stijl zoalsgpt-4ohebben 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.