Anbinden · Weg A

Eigene Ziele und Preise

Nicht jedes Modell läuft bei einem der großen Anbieter. Ein eigenes Ziel ist ein Endpunkt im OpenAI- oder Anthropic-Format, den Sie selbst benennen: Ollama auf dem Entwicklungsrechner, vLLM im Rechenzentrum, ein LiteLLM-Gateway, LM Studio, eine feste Azure-Ressource. Tokenwacht zählt dort wie überall — und rechnet mit den Preisen, die Sie hinterlegen.

Ein Ziel anlegen

  1. Cockpit › Anbindung › Abschnitt 5 · Eigene Ziele.
  2. Name (Kleinbuchstaben, Ziffern, Bindestrich), Adresse des Endpunkts ohne /v1, Format OpenAI oder Anthropic, optional ein Anbietername für die Preissuche (z. B. ollama).
  3. Die Basis-URL lautet danach https://tokenwacht.de/ziel/<name>/v1 (Anthropic-Format ohne /v1). Der Rest des Pfads geht unverändert an Ihr Ziel, Ihre Kopfzeilen auch — nur X-TW-* bleibt bei Tokenwacht.
from openai import OpenAI
client = OpenAI(base_url="https://tokenwacht.de/ziel/vllm/v1", api_key=os.environ["VLLM_KEY"],
                default_headers={"X-TW-Key": TW_KEY, "X-TW-Agent": "magnus-texter"})
antwort = client.chat.completions.create(model="Qwen/Qwen3-32B", messages=[{"role": "user", "content": "Sag Hallo."}])

„Nutzung im Strom anfordern“ setzt bei Streams stream_options.include_usage, damit die Zählung exakt bleibt (Ollama ignoriert das Feld, vLLM und LiteLLM unterstützen es). Lehnt ein Ziel unbekannte Felder ab, schalten Sie es aus; dann schätzt Tokenwacht bei Streams aus der Textlänge und kennzeichnet das Ereignis als geschätzt.

Was erlaubt ist

Betrieb bei Tokenwacht (tokenwacht.de)Selbstbetrieb
https-Ziele mit öffentlicher Adressejaja
http:// (unverschlüsselt)neinmit TW_ZIEL_PRIVAT_ERLAUBT=1
Private und lokale Adressen (10.x, 192.168.x, 127.0.0.1, .local, .internal)nein — der Proxy darf kein Relais in fremde Netze seinmit TW_ZIEL_PRIVAT_ERLAUBT=1
Zugangsdaten in der Adresseneinnein — sie gehören in die Kopfzeilen des Aufrufs
Tokenwacht selbst als Zielnein (Schleife)nein

Ollama auf dem eigenen Rechner erreicht der Proxy bei tokenwacht.de also nicht — dafür gibt es den Selbstbetrieb (Docker Compose, eine Zeile Konfiguration) oder das Python-SDK, das Zählwerte direkt aus Ihrem Prozess meldet.

Azure OpenAI als Ziel

Statt der Kopfzeile X-TW-Ziel je Aufruf können Sie Ihre Ressource einmal als Ziel azure anlegen (Format OpenAI, Anbieter azure, Adresse https://<ressource>.openai.azure.com). Dann lautet azure_endpoint="https://tokenwacht.de/ziel/azure", und die Preise kommen wie bei der Route /azure aus den OpenAI-Listenpreisen des Grundmodells.

Eigene Preise

Der Preiskatalog kennt die Listenpreise der großen Anbieter. Für alles andere — eigene Server, verhandelte Sätze, Modelle, die der Katalog noch nicht kennt — tragen Sie im Cockpit unter 6 · Eigene Preise Sätze je Million Token ein:

  • Anbieter (leer = gilt für jeden Anbieter mit diesem Modellnamen) und Modell, exakt oder mit * am Ende als Präfix (llama3.1*).
  • Währung USD oder EUR. EUR-Sätze werden mit dem hinterlegten Wechselkurs geführt, damit die Rechnung überall gleich läuft.
  • Eingabe, Ausgabe, Cache lesen, Cache schreiben, Denken (leer = wie Ausgabe). Null ist erlaubt — dann zählt Tokenwacht Token, ohne Kosten auszuweisen.

Eigene Preise gehen dem Katalog vor; die Kostenzeile trägt dann die Kennung mandant:eigen statt einer Katalogversion. Bis ein Preis hinterlegt ist, führt Tokenwacht unbekannte Modelle mit 0 € und dem Grund modell_unbekannt_im_preiskatalog — sichtbar in Läufen und Befunden, nie stillschweigend geraten.

Ein Betrag, den der Anbieter selbst nennt, ist verbindlich: OpenRouter meldet usage.cost, und wer eigene Zahlen per Ingest schickt, kann kosten_usd mitgeben. Die Kostenzeile heißt dann betrag:anbieter.

Selbstbetrieb: Ollama in einer Minute

# .env des Selbstbetriebs
TW_ZIEL_PRIVAT_ERLAUBT=1
# Cockpit › Anbindung › Eigene Ziele: Name ollama · Adresse http://ollama:11434 (Compose-Dienst) · Format OpenAI · Anbieter ollama
# Cockpit › Anbindung › Eigene Preise: Anbieter ollama · Modell * · EUR · Eingabe 0 · Ausgabe 0   (oder Ihre GPU-Kosten je Million Token)