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
- Cockpit › Anbindung › Abschnitt 5 · Eigene Ziele.
- Name (Kleinbuchstaben, Ziffern, Bindestrich), Adresse des Endpunkts ohne
/v1, Format OpenAI oder Anthropic, optional ein Anbietername für die Preissuche (z. B.ollama). - 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 — nurX-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 Adresse | ja | ja |
| http:// (unverschlüsselt) | nein | mit 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 sein | mit TW_ZIEL_PRIVAT_ERLAUBT=1 |
| Zugangsdaten in der Adresse | nein | nein — sie gehören in die Kopfzeilen des Aufrufs |
| Tokenwacht selbst als Ziel | nein (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)