Wer hat was ausgegeben
Kosten pro Anfrage, zurechenbar bis auf den einzelnen virtuellen Schlüssel, in der Währung, in der Ihnen der jeweilige Anbieter tatsächlich Rechnungen stellt.
TORHAUS.AI steht zwischen Ihren Anwendungen und den Modellanbietern, bei denen Sie einkaufen, und beantwortet die vier Fragen, die dringend werden, sobald mehr als ein Team sich einen API-Schlüssel teilt: Wer hat was ausgegeben, was wurde gesendet, wer darf welches Modell aufrufen und wohin ging es.
# Die einzige Änderung für Ihre Entwickler.
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.example.com/v1",
api_key="tor_...", # virtueller Schlüssel, kein Anbieterschlüssel
)
client.chat.completions.create(
model="gateway-balanced", # ein Routing-Alias, kein Modellname
messages=[{"role": "user", "content": "Hallo"}],
)
# Einem Team verrechnet. Gegen ein Budget geprüft.
# Durch Ihre Guardrails gelaufen. Ins Protokoll geschrieben.
→ 200 OK x-request-id: 01JD8P4W2Q…
Das erste Team bekommt Zugang. Dann das zweite. Ein halbes Jahr später liegt ein Schlüssel in elf Repositories, die Rechnung ist eine einzige Position, niemand kann sagen, welcher Prompt was gekostet hat, und die Rechtsabteilung möchte wissen, was wohin gesendet wurde. Ein Torii ist das Tor, durch das man bewusst geht. Mehr ist die Idee nicht.
Kosten pro Anfrage, zurechenbar bis auf den einzelnen virtuellen Schlüssel, in der Währung, in der Ihnen der jeweilige Anbieter tatsächlich Rechnungen stellt.
Eine Protokollzeile für jede weitergeleitete Anfrage, auf Wunsch mit einer Kopie von Anfrage- und Antwortinhalt für die Teams, die das brauchen.
Schlüssel, begrenzt auf Modelle, Operationen, Ratenbegrenzung, Budget und ein Ablaufdatum. In Sekunden ausgestellt, in Sekunden widerrufen.
Ausdrückliches Routing mit Ausweichzielen, und eine Aufzeichnung jedes Ziels, das versucht wurde, bevor eines geantwortet hat.
TORHAUS.AI läuft als eine Binary auf Infrastruktur, die Sie kontrollieren, in einer Region, die Sie gewählt haben, und spricht ausschließlich mit den Modell-Endpunkten, die Sie eingetragen haben. Es hat kein Zuhause, bei dem es anrufen könnte. Wo Ihre Daten liegen, ergibt sich daraus, wo Sie es installieren und auf welche Anbieter Sie es richten. Das ist die einzige Art von Souveränität, die eine Software Ihnen ehrlicherweise anbieten kann.
Eine Instanz gehört einem Unternehmen und wird über ein einzelnes Bootstrap-Konto verwaltet, dessen Passwort die Oberfläche Sie ändern lässt, bevor sich sonst etwas öffnet.
HTTPS_PROXY.GATEWAY_FX_SOURCE=none schaltet ihn ab, ein fester Kurs übernimmt. Genau so läuft eine Installation ohne Netzanbindung.'self', die Inline-Skripte nie erlaubt.Die Anteile sind beispielhaft. Die Zahlen sind das, was Ihr eigener Verkehr misst, pro Anfrage.
Jede Phase einer Anfrage wird einzeln gemessen und in Mikrosekunden in die Protokollzeile geschrieben, auch die entscheidende: Gesamtzeit minus Anbieteraufruf, also alles, was TORHAUS.AI selbst verbraucht hat. Die Detailansicht zeichnet das als gestapelten Balken. Eine Phase, die aus der Reihe fällt, ist damit sichtbar statt strittig.
Jede weitergeleitete Anfrage schreibt eine Protokollzeile: wer aufgerufen hat, zu welchem Schlüssel und Team das gehörte, welcher Alias auf welches Ziel aufgelöst wurde, Token, exakte Kosten, sämtliche Guardrail-Ergebnisse und wohin die Mikrosekunden gegangen sind. Anfrage- und Antwortinhalte werden nur gespeichert, wo Sie das einschalten, pro Team oder pro virtuellem Schlüssel.
X-Forwarded-For wird also ignoriert, bis Sie sagen, wie viele Reverse-Proxys wirklich davor stehen. Diesem Header ungefragt zu glauben hieße, jedem Aufrufer zu erlauben, sich eine beliebige Adresse ins Protokoll zu schreiben.Beispielzeile. Feldnamen und Einheiten sind die, die das Gateway tatsächlich schreibt.
Ein Guardrail ist ein Typ plus eine JSON-Konfiguration, additiv zugeordnet zu allen Anfragen oder zu einer Organisation, einem Team oder einem Schlüssel. Regeln lassen sich als YAML oder JSON importieren und exportieren. Ein Regelsatz wandert damit als Datei von einem Test-Gateway ins Produktivsystem, nicht als Nachmittag voller Klicks.
fail_closed blockiert eine Prüfung, die selbst fehlschlägt, etwa weil ein Webhook nicht antwortet, statt die Anfrage durchzulassen.Die Anfrage erreicht den Anbieter nie. Der Client bekommt einen Fehler in OpenAI-Form, den er bereits behandeln kann.
Der Treffer wird ersetzt, bevor die Anfrage hinausgeht, und bevor irgendetwas festgehalten wird.
Die Anfrage läuft durch, das Ergebnis landet in der Protokollzeile. So messen Sie eine Regel, bevor Sie sie durchsetzen.
Guardrails lesen den Text, den Ihre Nutzerinnen und Nutzer schreiben. Was Ihre Richtlinie darüber hinaus braucht, etwa ein hauseigenes Muster oder ein internes Projektkürzel, ist eine Regex-Regel, die Sie selbst ergänzen.
Preise und Abrechnungswährung werden pro Provider-Endpunkt gesetzt. Ein Anbieter, der in EUR fakturiert, und einer, der in USD fakturiert, werden damit jeweils nativ erfasst, ohne Umrechnung beim Schreiben.
Ausgabengrenzen für eine Organisation, ein Team oder einen einzelnen virtuellen Schlüssel, pro Tag, Woche, Monat oder Gesamtlaufzeit.
402, nicht 429. Ein 429 bringt die Wiederholungslogik eines SDK dazu, es gegen eine Bedingung erneut zu versuchen, die von allein nie eintritt.Organisationen, darunter Teams, und beliebig viele virtuelle Schlüssel pro Team, jeder mit einer Kostenstelle, die Sie der Buchhaltung geben können.
Niedrigere Zahlen werden zuerst versucht. Ziele mit gleicher Zahl teilen den Verkehr nach Gewichtung. Ein durchgestrichenes Ziel ist gesperrt.
Ein Modell-Alias verweist auf Ziele, die in Prioritätsstufen gruppiert und innerhalb einer Stufe gewichtet sind. Wenn ein Anbieter schwächelt, sperrt ihn der Sicherungsautomat, der Verteiler überspringt ihn, und der Verkehr wandert eine Stufe weiter. Die Protokollzeile zeigt danach genau, welche Ziele unterwegs versucht wurden. Die Erholung läuft über einen einzelnen Testaufruf, nicht über einen Ansturm.
Richten Sie ein beliebiges OpenAI-SDK auf das Gateway, geben Sie ihm einen virtuellen Schlüssel und fragen Sie nach einem Alias statt nach einem Modellnamen. Das ist die gesamte Integration.
Die Namen stehen hier, um zu sagen, womit TORHAUS.AI sich verbindet. Keines dieser Unternehmen empfiehlt dieses Produkt oder steht mit ihm in Verbindung, und alle Marken gehören ihren jeweiligen Inhabern.
Jeder Weg beginnt mit demselben Gespräch, weil die richtige Antwort davon abhängt, was Ihre Datenschutzbeauftragten, Ihr Betriebsrat und Ihr Plattformteam jeweils sagen können müssen.
Wir betreiben TORHAUS.AI für Sie auf Infrastruktur in der Europäischen Union. Sie bekommen die Oberfläche am ersten Tag statt eines Einführungsprojekts.
Die Binary, in Ihrem Konto, in Ihrer Region, unter Ihrem Kubernetes oder Compose, mit Ihrem eigenen Postgres und Valkey.
Ihre eigene Hardware, Ihr eigenes Netz, und ein Gateway, das das Internet gern nie zu sehen bekommt.
Nein, und seien Sie vorsichtig bei allen, deren Software das behauptet. Das Gateway erfasst und prüft die Geografie eines Ziels nicht. Wo die Daten liegen, folgt daraus, wo Sie es betreiben und welche Endpunkte Sie konfigurieren, und ist nichts, was eine Binary zusichern kann.
Was es Ihnen gibt, ist die Kontrolle, die diese Entscheidung zu Ihrer macht: Es läuft, wo Sie es hinstellen, ruft von sich aus nichts auf, und jeder Endpunkt nach oben ist einer, den Sie selbst eingetragen haben. Im EU-gehosteten Betrieb betreiben wir es in der Europäischen Union und sagen Ihnen genau, welche Modellanbieter Ihre Prompts erreichen.
Es ist eine Postgres-Tabelle, keine Blockchain. Es gibt keine Hash-Kette und keinen einmal beschreibbaren Speicher. Wer Datenbankzugriff hat, kann es ändern. Behandeln Sie es wie Ihre übrigen Produktivdaten und regeln Sie den Zugriff genauso.
Was es ist: eine Aufzeichnung pro Anfrage über Identität, Routing, Token, Kosten, Guardrail-Ergebnisse und Latenz, asynchron geschrieben, damit sie nie eine Anfrage verlangsamt. Staut sich der Schreiber unter Last, verwirft er Zeilen, statt den Proxy zu blockieren, und zählt jede verworfene Zeile, sodass Sie darauf alarmieren können. Alternativ stellen Sie ihn auf Blockieren um und tauschen Latenz gegen Lückenlosigkeit.
Anbieter-Zugangsdaten werden mit AES-256-GCM versiegelt und an ihre eigene Datenbankzeile gebunden. Ein anderswohin kopiertes Geheimnis lässt sich damit schlicht nicht entschlüsseln. Virtuelle Schlüssel werden nur als Hashwert gespeichert und genau einmal angezeigt.
Gespeicherte Prompts verschlüsselt das Gateway nicht zusätzlich: Sie liegen in Ihrer Datenbank, unter der Verschlüsselung im Ruhezustand, die Sie dort ohnehin betreiben. Die Speicherung ist aus, bis Sie sie für ein benanntes Team oder einen Schlüssel einschalten, und Schwärzungen laufen davor. Den Transport terminieren Sie selbst: hinter Ihrem Reverse-Proxy, mit gesetztem Produktivflag und mit SSL-Pflicht für jede Datenbank, die nicht auf localhost liegt.
Nein. Ein frisch installiertes Gateway setzt nichts durch, bevor Sie die erste Regel zugeordnet haben, und das ist Absicht: Eine Schwärzung, die niemand gewählt hat, ist eine Schwärzung, der niemand traut.
Einmal zugeordnet, findet und ersetzt der Prüfer für personenbezogene Daten E-Mail-Adressen, Telefonnummern, Kartennummern, IBANs, IP-Adressen, US-Sozialversicherungsnummern und API-Schlüssel im Text der Anfrage, mit Prüfsummenvalidierung, damit er echten Verkehr übersteht. Er liest den Fließtext, den Ihre Leute schreiben. Was Ihrem Unternehmen eigen ist, ergänzen Sie als Regex-Regel. Bei einer gestreamten Antwort wird Text, der den Client schon erreicht hat, zwar als Ergebnis vermerkt, kann aber nicht mehr zurückgeholt werden.
Noch nicht. Eine Instanz wird über ein einzelnes Bootstrap-Konto verwaltet, und jedes Administratorkonto hat denselben vollen Zugriff, einschließlich der Möglichkeit, gespeicherte Inhalte zu lesen, wo ein Team die Speicherung eingeschaltet hat. Das sollten Sie wissen, bevor Sie die Speicherung breit aktivieren.
Trennen können Sie heute das Netz. Der Schalter -admin-port legt die Oberfläche auf einen eigenen Socket. Die Datenebene bedient danach nur noch /v1 und beantwortet Verwaltungspfade mit einem deutlichen 404. Geben Sie die Datenebene Ihren Entwicklern und halten Sie die Oberfläche im internen Netz oder hinter einem VPN.
Auf einem Laptop Minuten: Postgres und Valkey hochfahren, die Datenbank anlegen, das Gateway starten. Die Oberfläche gibt ein einmaliges Bootstrap-Passwort aus, das sie Sie anschließend ändern lässt. Danach: ein Provider-Endpunkt mit Preisliste, ein Modell-Alias, eine Organisation, ein Team, ein Schlüssel.
Für den Produktivbetrieb kommen der Reverse-Proxy dazu, echte Zugangsdaten für die Datenspeicher mit TLS und der getrennte Admin-Port. Die Compose-Datei im Repository ist eine Entwicklungsumgebung und sollte nie mit einer gehärteten Installation verwechselt werden.
Das hängt davon ab, welchen der drei Wege Sie gehen und wie viele Teams dahinterstehen. Deshalb erstellen wir ein Angebot, statt eine Tabelle zu veröffentlichen. Vereinbaren Sie die Demo, und Sie haben die Zahl im selben Gespräch.
Dreißig Minuten, Ihre Fragen und ein laufendes Gateway statt Folien. Bringen Sie die Person mit, die fragt, was mit den Prompts passiert. Das ist der Teil, den wir gern machen.
Entwickelt und betreut aus Rosenheim, Deutschland