ThalamusNetwork stellt einen OpenAI-kompatiblen Endpunkt bereit. Bestehende OpenAI-SDKs funktionieren — du änderst nur base_url und den API-Key. Jede Anfrage wird von einem Provider im Netzwerk beantwortet und mit OTH-Token abgerechnet.
Antworten sind KI-generiert; kennzeichne KI-Ausgaben in deiner Anwendung entsprechend (Transparenzpflicht Art. 50 KI-VO).
POST https://enigmanet.eu/v1/chat/completions
Body und Antwort folgen dem OpenAI-Format (chat.completion). Die Antwort enthält zusätzlich ein enigma-Feld mit job_id, duration_ms und eni_cost.
Erstelle einen API-Key unter Profil (Format enk_…) und sende ihn als Bearer-Token:
Authorization: Bearer enk_…
curl https://enigmanet.eu/v1/chat/completions \
-H "Authorization: Bearer enk_…" \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3:4b",
"messages": [{"role": "user", "content": "Hallo!"}]
}'from openai import OpenAI
client = OpenAI(
base_url="https://enigmanet.eu/v1",
api_key="enk_…",
)
resp = client.chat.completions.create(
model="gemma3:4b",
messages=[{"role": "user", "content": "Hallo!"}],
)
print(resp.choices[0].message.content)Mit "stream": true liefert der Endpunkt Server-Sent Events im OpenAI-chat.completion.chunk-Format (kompatibel mit OpenAI-SDKs, LiteLLM, LangChain, Open WebUI). Zusätzlich werden die Orchestrierungs-Schritte live als Content-Deltas gestreamt — Routing, Decomposition, Subtasks, Synthese — bevor die eigentliche Antwort kommt. Jeder Event-Chunk trägt zusätzlich ein maschinenlesbares enigma-Feld ({ event, area, task }). Der Stream endet mit data: [DONE]; der letzte Chunk trägt usage.
curl -N https://enigmanet.eu/v1/chat/completions \
-H "Authorization: Bearer enk_…" \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3:4b",
"stream": true,
"messages": [{"role": "user", "content": "Analysiere den Markt für E-Bikes."}]
}'Python (openai SDK, stream=True):
stream = client.chat.completions.create(
model="gemma3:4b",
messages=[{"role": "user", "content": "Analysiere den Markt für E-Bikes."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)Einbau in eine eigene Website oder App (JavaScript-Snippet + Server-Proxy): siehe Streaming-Beispiel.
Gib entweder einen Routing-Alias (enigma-auto, enigma-web, enigma-direct — siehe Abschnitt „Routing & Web-Recherche", empfohlen) oder einen echten Modellnamen an (z. B. eines der folgenden).
gemma3:4bgemma3:12b-it-q4_K_Mdeepseek-r1:8bmistral-nemo:12bqwen3:8bAktuelle Live-Liste der verfügbaren Modelle: GET https://enigmanet.eu/api/tags
Über das model-Feld steuerst du das Routing. Die Aliase sind der empfohlene Einstieg:
enigma-auto — automatische Einstufung (Standard, entspricht dem Weglassen des Feldes).enigma-web — erzwingt Live-Web-Recherche: gesucht, abgerufen, per Cross-Encoder neu geordnet und ausschließlich aus den abgerufenen Quellen beantwortet. Enthalten die Quellen die Antwort nicht, wird das offen gesagt — keine erfundenen Zahlen aus Trainingswissen.enigma-direct — direkte Einzelmodell-Antwort ohne Orchestrierung (am schnellsten).Für Recherche "stream": true verwenden. Ein Recherche-Lauf dauert je nach Frage länger; im Streaming siehst du die Schritte (Suche, Abruf, Reranking, Synthese) live und der Lauf hat ein großzügiges Zeitbudget. Ohne Streaming gilt ein 120-Sekunden-Limit — für mehrstufige Recherche oft zu knapp.
curl -N https://enigmanet.eu/v1/chat/completions \
-H "Authorization: Bearer enk_..." \
-H "Content-Type: application/json" \
-d '{
"model": "enigma-web",
"stream": true,
"messages": [{"role": "user", "content": "Aktueller Goldpreis pro Unze in USD mit Quelle?"}]
}'eni_cost in der Antwort). Tägliches Guthaben gibt es unter Profil."stream": true) wird unterstützt — SSE im OpenAI-Format inkl. Live-Orchestrierungs-Schritten (siehe Abschnitt „Streaming (SSE)").