Nutzen Sie das OpenAI Python SDK und LangChain mit einer günstigeren API (UberLLM)
Setzen Sie base_url="https://api.uberllm.dev/v1" und api_key auf Ihren UberLLM Schlüssel in OpenAI(...) oder ChatOpenAI(...), dann übergeben Sie eine beliebige UberLLM model id. Chat, streaming, tool calls und JSON output funktionieren weiterhin; Ihr anderer Code bleibt unverändert.
Schritte (OpenAI Python SDK)
- Erstellen Sie einen Schlüssel auf Ihrer Schlüsselseite und fügen Sie Guthaben hinzu.
- Speichern Sie ihn als Umgebungsvariable:
export UBERLLM_API_KEY=ull_your_key
- Richten Sie den Client auf UberLLM aus:
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)
Das ist die ganze Änderung. client.chat.completions.create mit stream=True, tools, response_format, temperature und max_tokens funktioniert wie zuvor. Der async client (AsyncOpenAI) akzeptiert dieselben zwei Argumente.
Ohne den Code zu berühren
Das OpenAI SDK liest auch zwei Umgebungsvariablen, sodass ein Skript, das OpenAI() ohne Argumente aufruft, ohne Bearbeitung verschoben werden kann:
export OPENAI_BASE_URL=https://api.uberllm.dev/v1
export OPENAI_API_KEY=ull_your_key
python your_script.py
Sie müssen den model= string immer noch in eine UberLLM id wie deepseek/deepseek-v4.1-flash ändern.
Schritte (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)
Ketten, Agenten, bind_tools und .stream() funktionieren unverändert. Übergeben Sie base_url im Code, anstatt sich auf Umgebungsvariablen zu verlassen: Das Argument gewinnt immer, sodass ein verirrter OPENAI_API_BASE auf der Maschine keine Aufrufe an andere Stellen senden kann.
LangChain.js ist die gleiche 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" },
});
Wählen Sie ein günstigeres Modell für jede Aufgabe
Der Vorteil eines einzigen Schlüssels für jedes Modell ist, dass Sie aufhören können, Spitzenpreise für einfache Aufgaben zu zahlen. Eine übliche Aufteilung:
- Komplexe Schlussfolgerungen oder kundenorientierte Antworten: ein Top-Modell wie
deepseek/deepseek-v4.1-flash. - Massen-Zusammenfassungen, Tagging, Extraction:
google/gemma-3-27b-itoder ein anderes Modell aus der untenstehenden Batch-Tabelle, oft 50 bis 100 Mal günstiger pro Token.
Ändern Sie nur den model= string, um einen Schritt von einem zum anderen zu wechseln.
Was nicht enthalten ist
UberLLM bietet Chat-Completions (/v1/chat/completions), die Responses API (client.responses.create, inklusive streaming und tool calls) und die Anthropic messages route. Es speichert keinen Zustand zwischen Aufrufen, senden Sie daher die gesamte Konversation in input anstelle von previous_response_id (Responses API Referenz). Es bietet keine Embeddings oder die Assistants API: belassen Sie diese Aufrufe bei Ihrem aktuellen Anbieter.
Fehlerbehebung
openai.AuthenticationError(401): Der Schlüssel ist falsch oder leer. Drucken Sielen(os.environ["UBERLLM_API_KEY"]); ein Schlüssel istull_plus 43 Zeichen.openai.NotFoundError(404) auf/responsesoder/embeddings: Diese Routen existieren hier nicht, siehe oben.model_not_found: OpenAI-Stil-IDs wiegpt-4obenötigen den Hersteller davor:openai/gpt-4o.openai.RateLimitError(429): Das Pro-Minute-Limit des Schlüssels (standardmäßig 300). Erhöhen Sie es auf der Schlüssel-Seite, oder fügen Sie Wiederholungen mit Backoff hinzu.- 402
insufficient_credits: Laden Sie auf der Guthaben-Seite auf.