Migration von OpenAI (Drop-in-Replacement)
Die noris “LLM as a Service”-Plattform implementiert die OpenAI-API vollständig. Deshalb funktioniert vorhandener Code, der auf das OpenAI-SDK oder die OpenAI-REST-API setzt, nach minimaler Anpassung unverändert weiter. Eine Portierung der Geschäftslogik, der Prompts oder etwaiger RAG-Pipelines ist nicht erforderlich.
Konkret genügen drei Parameteränderungen, um von OpenAI auf noris zu wechseln. Danach läuft die Anwendung wie gewohnt, lediglich das zugrunde liegende Modell stammt nun aus der noris-Infrastruktur.
Die 3 Parameter
Abschnitt betitelt „Die 3 Parameter“| Parameter | OpenAI | noris |
|---|---|---|
| Base URL | https://api.openai.com/v1 | https://ai.noris.de/v1 |
| API Key | OpenAI Key | noris API Key (gegen AI-Punkte) |
| Modell-Name | gpt-4o | vllm/release/gpt-oss-120b |
Speichern Sie diese Werte idealerweise als Umgebungsvariablen (OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL), sodass ein Wechsel ohne Code-Änderung möglich ist.
Python: Vorher/Nachher
Abschnitt betitelt „Python: Vorher/Nachher“Vorher, klassischer OpenAI-Aufruf:
from openai import OpenAI
client = OpenAI(api_key="sk-...")response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hallo!"}])print(response.choices[0].message.content)Nachher, identischer Code, nur drei Werte angepasst:
from openai import OpenAI
client = OpenAI( base_url="https://ai.noris.de/v1", api_key="YOUR_NORIS_API_KEY")response = client.chat.completions.create( model="vllm/release/gpt-oss-120b", messages=[{"role": "user", "content": "Hallo!"}])print(response.choices[0].message.content)JavaScript: Vorher/Nachher
Abschnitt betitelt „JavaScript: Vorher/Nachher“Vorher:
import OpenAI from "openai";
const client = new OpenAI({apiKey: "sk-..."});const response = await client.chat.completions.create({ model: "gpt-4o", messages: [{role: "user", content: "Hallo!"}]});console.log(response.choices[0].message.content);Nachher:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://ai.noris.de/v1", apiKey: "YOUR_NORIS_API_KEY"});const response = await client.chat.completions.create({ model: "vllm/release/gpt-oss-120b", messages: [{role: "user", content: "Hallo!"}]});console.log(response.choices[0].message.content);LangChain: Vorher/Nachher
Abschnitt betitelt „LangChain: Vorher/Nachher“LangChain abstrahiert den Provider über die Klasse ChatOpenAI. Auch hier ändern sich nur drei Konstruktor-Argumente.
Vorher:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o", api_key="sk-...")response = llm.invoke("Hallo!")print(response.content)Nachher:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI( model="vllm/release/gpt-oss-120b", api_key="YOUR_NORIS_API_KEY", base_url="https://ai.noris.de/v1")response = llm.invoke("Hallo!")print(response.content)Bestehende Chains, Agents, Memory- oder RAG-Komponenten bleiben unberührt, sie kommunizieren ja nur mit dem ChatOpenAI-Wrapper, dessen Ziel sich geändert hat.
Hinweise
Abschnitt betitelt „Hinweise“- Vorhandene Logik, Prompts, Tool-Schemata und RAG-Pipelines können unverändert übernommen werden. Die OpenAI-kompatible Schnittstelle deckt Chat Completions, Streaming, Tool Calling und Embeddings gleichermaßen ab.
- Beachten Sie die unterschiedlichen Modellnamen, siehe Modell-Auswahl für das passende Gegenstück zu Ihrem bisherigen OpenAI-Modell.
- Die Abrechnung erfolgt über AI-Punkte statt über OpenAI-Credits. Vergleichen Sie Token-Preise vorab, um Kostenkalkulationen anzupassen.
- Eine Migration dauert in der Praxis wenige Minuten: API-Key hinterlegen, drei Werte tauschen, Smoke-Test laufen lassen.
