DE ▾
Jetzt starten
pro 1M Input-Token
$0,15
Ausgabe-Token / 1M
$0,50
Token-Kontext
100.000
Testguthaben
$0,50
Anfragen pro Minute
300

OpenAI-API-Ersatz: Migrations-Checkliste

Ein OpenAI-API-Ersatz funktioniert nur reibungslos, wenn du zuerst drei Dinge prüfst: welche Endpunkte dein Code aufruft, auf welche Funktionen es ankommt und wie sich das neue Modell auf deine Prompts verhält. Diese Checkliste deckt alle drei Punkte ab, mit Befehlen, die du heute ausführen kannst.

Zuletzt aktualisiert

Ein Glasrohr, das zwischen zwei Ventilen neben einem Bedienfeld mit leuchtenden und erloschenen Status-Indikatoren umgeleitet wird

Zusammenfassung

  • Chat-Vervollständigungen, Antworten, Streaming, Tools und JSON-Modus funktionieren nach einer Änderung der Base URL mit dem Standard-OpenAI-SDK.
  • Die Endpunkte für Embeddings, Bilder, Audio und Fine-Tuning sind nicht verfügbar. Behalte diese beim aktuellen Anbieter.
  • Das Modell ist ein anderes, also teste Prompts vor dem Umzug. Halte ein Flag zum Zurückwechseln bereit.
  • Die Abrechnung ist Prepaid und pro Token: $0,15 pro 1M Input und $0,50 pro 1M Output.

Schritt 1: Inventarisieren, was dein Code aufruft

Bevor du etwas änderst, liste alle OpenAI-Funktionen auf, die du tatsächlich nutzt. Die meisten Projekte nutzen weniger, als sie glauben, und die Liste entscheidet, ob dieser Wechsel eine Fünf-Minuten-Aufgabe oder eine teilweise ist. Führe dies im Projektstamm aus:

# New values you will point the project at:
export OPENAI_BASE_URL="https://api.alternativeapiopenai.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"
export MODEL="uncensored"

# What does the code call today?
grep -rnE "embeddings|images\.|audio\.|fine_tuning|moderations|assistants|batches" --include="*.py" --include="*.js" --include="*.ts" .
grep -rnE "model *[=:] *['\"]" --include="*.py" --include="*.js" --include="*.ts" .

Der erste grep findet Endpunkte, die diese API nicht anbietet. Der zweite listet alle hart codierten Modellnamen auf, die du ändern musst. Schreibe die Ergebnisse in eine kurze Tabelle mit einer Zeile pro Funktion: genutzt, nicht genutzt und was du damit anstellen musst.

Schritt 2: Vergleich mit dem Unterstützten

OpenAI-FunktionHierHinweise
Chat-VervollständigungenJaPOST /v1/chat/completions
Responses APIJaPOST /v1/responses
Modelle auflistenJaGET /v1/models gibt uncensored zurück
StreamingJaSSE, mit Nutzung am Ende
Function CallingJatools, tool_choice, gestreamte tool_calls, role: "tool" Ergebnisse
JSON-ModusJaresponse_format: {"type":"json_object"}
ParameterJaTemperatur, top_p, Stop, Seed, Strafen
EmbeddingsNeinNicht angeboten
Bild-, Audio-, VideoerzeugungNeinNur Text
Fine-TuningNeinNicht angeboten

Alles, was nicht auf der unterstützten Seite dieser Tabelle steht, sollte als nicht verfügbar behandelt werden, bis du es in der Dokumentation überprüfst. Dazu gehört auch Output mit Schemaeinschränkung: Der JSON-Modus lässt das Modell gültiges JSON zurückgeben, erzwingt aber nicht dein Schema, also behalte deinen Validierungscode. Bild-Eingaben in eine Chat-Nachricht sind ebenfalls nicht aufgeführt, plane also nur Text-Prompts.

Das Modell ist ein einzelnes Open-Weight-Modell, das von einem unabhängigen Anbieter betrieben wird. Es ist nicht das Modell von OpenAI und keine offizielle API eines Anbieters, und es routet nicht zwischen Anbietern. Erwarte einen anderen Stil, andere Stärken und anderes Fehlerverhalten.

Schritt 3: Den Wechsel vollziehen

Mit dem offiziellen Python SDK ändern sich drei Werte:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.alternativeapiopenai.com/v1",  # was the default OpenAI URL
    api_key="YOUR_API_KEY",                               # was your old key
)

resp = client.chat.completions.create(
    model="uncensored",                                   # was your old model name
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)

Noch besser: Behalte die Basis-URL, den Schlüssel und den Modellnamen in der Konfiguration, damit derselbe Build auf beide Anbieter zeigen kann. Ein einfaches Muster sind drei Umgebungsvariablen: LLM_BASE_URL, LLM_API_KEY und LLM_MODEL. Dann bedeutet ein Rollback nur drei Werte zu ändern und neu zu starten, nicht eine neue Version zu veröffentlichen.

Wenn dein Code die Responses API nutzt, gelten dieselben drei Werte. Für Frameworks wie LangChain oder LlamaIndex suche nach dem OpenAI-kompatiblen Connector und übergebe dieselbe Basis-URL und denselben Modellnamen.

Schritt 4: Vor der Produktion testen

Das Risiko bei jedem Modellwechsel ist das Verhalten, nicht die Verbindung. Teste diese in dieser Reihenfolge:

  1. Verbindung. Eine Anfrage mit curl. Wenn sie eine Antwort zurückgibt, sind Schlüssel und URL korrekt.
  2. Deine echten Prompts. Spiele mindestens zwanzig Produktions-Prompts ab und überprüfe den Output. Prüfe Tonfall, Länge und Befolgung der Anweisungen.
  3. Tool-Aufrufe. Führe jedes deiner Tools aus und überprüfe die Argumente, die das Modell erzeugt. Bestätige, dass deine Schleife tool_calls in einer gestreamten Antwort verarbeitet.
  4. JSON-Output. Führe hundert JSON-Modus-Aufrufe durch und zähle, wie viele deinen Parser oder dein Schema fehlschlagen lassen.
  5. Lange Eingaben. Das Kontextfenster hat 100.000 Token für Prompt plus Vervollständigung. Teste einmal einen großen Prompt, um zu wissen, wie lange er dauert.
  6. Grenzen. Ein vollständiger Schlüssel erlaubt 8 parallele Anfragen und 300 pro Minute. Lasttest bei deinem echten Peak.

Token-Anzahlen unterscheiden sich

Wenn dein Code Token mit einer Tokenizer-Bibliothek schätzt, die für ein anderes Modell entwickelt wurde, betrachte das Ergebnis als Näherung. Verwende das usage-Objekt in jeder Antwort für die Abrechnung und Budgetplanung und plane einen Sicherheitspuffer ein, wenn du die Historie kürzt, um in das 100.000-Token-Kontextfenster zu passen. Die Einstellung von max_tokens ist hier optional, aber eine sinnvolle Obergrenze verhindert, dass eine durchgehende Antwort mehr ausgibt, als du geplant hast.

Wie die Fehler aussehen

Über einem Limit gibt die API HTTP 429 mit dem Code rate_limited (Anfragen pro Minute) oder concurrency (zu viele gleichzeitig) zurück. Eine temporäre Überlastung gibt ebenfalls 429 zurück, mit einem Retry-After: 5-Header. Eine gestreamte Anfrage hält ihren Concurrency-Slot bis zum Stream-Ende, also zählen langsame Clients gegen dich. Fehlgeschlagene oder abgelehnte Anfragen werden nicht berechnet.

Schritt 5: Die Kosten prüfen

Der Preis beträgt 0,15 $ pro 1 Mio. Input-Token und 0,50 $ pro 1 Mio. Output-Token, bezahlt aus Prepaid-Guthaben. Zum Vergleich mit deiner aktuellen Rechnung verwende deine eigenen Token-Anzahlen aus dem usage-Feld und wende die Formel an: Kosten = input_tokens x 0,15 / 1.000.000 + output_tokens x 0,50 / 1.000.000. Für andere Anbieter prüfe deren aktuelle Preisgestaltung und setze dieselben Token-Anzahlen ein.

Ein durchgerechnetes Beispiel: Ein Support-Tool bearbeitet 30.000 Anfragen im Monat mit 1.200 Input- und 250 Output-Token pro Anfrage. Input sind 36M Token, was $5,40 kostet. Output sind 7,5M Token, was $3,75 kostet. Der monatliche Gesamtbetrag beträgt $9,15. Wenn dieselbe Auslastung das Kontextfenster füllt, bei 100.000 Input-Token, kostet jede Anfrage allein im Input $0,015, also ist die Prompt-Größe die Zahl, auf die du achten musst.

Die Preisseite listet Aufladungsbeträge auf. Diese reichen von $20 bis $500, mit +5% ab $50, +10% ab $100 und +15% ab $200, nur bezahlt in Krypto (USDT auf TRC20 oder USDC auf Base). Guthaben verfällt nie, und es gibt kein Abonnement. Der Leitfaden zu API-Preisen für unzensierte Modelle erklärt die Kostenstruktur im Detail.

Schritt 6: Ausrollen und einen Rückweg bereithalten

Leite zunächst einen kleinen Teil des Traffics an den neuen Endpunkt weiter. Logge die Request-ID aus dem X-Request-Id-Header, um eine schlechte Antwort zurückverfolgen zu können, und notiere X-Balance-USD nach den Aufrufen, damit das Guthaben nicht unbemerkt ausgeht. Leite eine Warnung ein, wenn das Guthaben unter das Ausgabenäquivalent einiger Tage sinkt.

Wenn der Shadow-Traffic gut aussieht, erhöhe den Anteil schrittweise und halte den Schlüssel des alten Anbieters eine Woche lang gültig. Für alles, was erwachsenen Inhalt betrifft, ist das Modell für rechtmäßigen Erwachsenengebrauch gedacht, und sexueller Inhalt mit Minderjährigen wird immer abgelehnt. Prompts werden nicht zum Training verwendet.

Neue Konten können mit einem Klick auf der API-Schlüssel-Seite 0,50 $ an Testguthaben beanspruchen, gültig für 7 Tage. Das reicht, um die gesamte Checkliste an einer Stichprobe deines Traffics durchzuführen.

Häufig gestellte Fragen

Wird mein bestehender OpenAI-SDK-Code funktionieren?

Für Chat-Vervollständigungen und Antworten: Ja. Ändere die Basis-URL, den Schlüssel und den Modellnamen. Aufrufe für Embeddings, Bilder, Audio oder Fine-Tuning funktionieren dann nicht.

Ist die Antwortqualität die gleiche wie bei den Modellen von OpenAI?

Nein, es handelt sich um ein anderes Open-Weight-Modell. Teste deine eigenen Prompts, anstatt eine Gleichwertigkeit in beide Richtungen vorauszusetzen.

Wie fahre ich zurück, wenn etwas kaputtgeht?

Behalte die Basis-URL, den Schlüssel und das Modell in der Konfiguration und halte den Schlüssel deines alten Anbieters aktiv. Der Rückwechsel ist dann nur eine Konfigurationsänderung.

Unterstützt es Function Calling?

Ja. Verwende Tools und tool_choice und gib Ergebnisse als Nachrichten mit der Rolle tool zurück. Gestreamte tool_calls werden unterstützt.

Die Generierung des Schlüssels erfordert nur ein Formular

Melde dich an, kopiere deinen Schlüssel und aktualisiere deine Basis-URL. Das ist die gesamte erforderliche Konfiguration.