POST /v1/decisions bedient die Decisions API von OpenAI:
Ein Request enthält einen input (Text oder Benutzernachrichten aus Text und Bildern) und eine
Liste typisierter Fragen, und jede Antwort ist eine Wahrscheinlichkeit, eine Auswahl oder eine
Bewertung statt Freitext.
Der Endpunkt ist verfügbar, sobald ein openai-, jev- oder
openrouter-Provider konfiguriert ist. Ohne einen solchen antwortet er mit 404.
In jedem Fall hat die Antwort das Format von OpenAI, sodass die OpenAI-SDKs unverändert funktionieren.
Request und Antwort
base_url auf das Gateway:
Jev und Kev
Einjev-Modell beantwortet denselben Request über System One, das dieselben
drei Fragearten kennt: Ein predicate ist ein noul, und choice und
score behalten ihre Namen. GoModel übersetzt Request und Antwort, sodass
Sie zwischen OpenAI und Jev wechseln oder per Failover von einem zum anderen ausweichen können,
ohne den Client-Code zu ändern.
Einige Teile eines Requests lassen sich nur eingeschränkt übersetzen:
- Bilder funktionieren bei gehostetem Jev, gesendet als Base64-PNG- oder -JPEG-Data-URLs
(
data:image/png;base64,...). Jedes Bild wird zu einem System-One-Bild-Asset, das im State an der Stelle platziert wird, an der es im Input stand, und GoModel fügt den von TypeSafe geforderten HeaderTypeSafe-Danger-Zone-Images: truehinzu. GoModel ruft für Jev keine Bildlinks ab, daher liefert einehttps-Bild-URL400;detailwird ignoriert. TypeSafe kennzeichnet die Bildunterstützung als experimentell und begrenzt jedes Bild auf 280–1568 Pixel pro Seite. Ein Kev-Server liest nur Text, daher liefert ein Request mit Bild an ein Kev-Modell400: GoModel behandelt einenjev-Provider als Kev-Server, sofern seine Base-URL nicht die gehostete API von TypeSafe ist (https://api.typesafe.ai). - Auswahlwerte sind Strings oder Booleans; ein Boolean wird als
"true"oder"false"gesendet und kommt als Boolean zurück. Ein String"true"und ein Booleantruein derselben Frage kollidieren und werden abgelehnt. prompt_cache_key,prompt_cache_optionsundsafety_identifierwerden verworfen.- Eine Frage, die System One unbeantwortet lässt, kommt als
refusalzurück, was die Decisions API für jede Frage zulässt. - Upstream-Fehler behalten Status und Meldung von TypeSafe; eine fehlerhafte Frage wird mit ihrem System-One-Schlüssel benannt.
Was das Gateway tut
Wie bei System One löst der Endpunktmodel auf (einschließlich virtueller Modelle und
fest angegebener Jev-Versionen), wendet Allowlist, Rate-Limits und
Budgets des Aufrufers an, führt Prompt-Guardrails über den Input aus,
beantwortet identische Requests aus dem exakten Response-Cache,
weicht bei Verfügbarkeitsfehlern per Failover auf das nächste Ziel aus und erfasst Audit und
Nutzung unter dem Modell, das geantwortet hat. Filtern Sie das Audit-Log nach dem Request-Typ
Decisions.
Die Nutzung auf /v1/decisions wird nur für Input-Tokens berechnet, jedes zum
Input-Tarif des Modells, so wie OpenAI die Decisions API abrechnet: Output-, Cache-Read- und
Cache-Write-Tokens sind dort kostenlos, selbst bei einem Modell wie gpt-6-luna, dessen
Katalogpreise Chat-Tarife enthalten. Long-Context-Stufen bestimmen weiterhin den Input-Tarif. OpenRouter
meldet den berechneten Betrag als usage.cost; die übersetzte Antwort behält ihn bei, und
die Nutzung erfasst ihn als Kosten des Requests.
Guardrails sehen jede Input-Nachricht als Benutzernachricht mit ihren Text- und Bildteilen;
Änderungen erreichen den Provider, und unveränderte Teile behalten ihr exaktes JSON.
Änderungen, für die ein Decision-Request keinen Platz hat, etwa ein eingefügter System-Prompt,
werden mit einer Warnung verworfen. Nur die Prompt-Phase greift: Die Antwort besteht aus typisierten
Werten (Wahrscheinlichkeiten, Auswahlen, Bewertungen), nicht aus einer Completion, daher laufen Guardrails der Response-
und Stream-Phase nicht darauf, und sie wird unverändert weitergegeben. Ein
Workflow, der solche Guardrails für einen Decisions-Request auswählt, protokolliert pro Guardrail
eine Warnung.
Decision-Modelle können auch anderen Traffic beurteilen: Ein
llm_judge-Guardrail
mit einem Decision-Modell stellt ihm zu jedem Chat- oder Responses-Prompt eine
Ja-oder-Nein-Frage zur Richtlinie und blockiert anhand der Wahrscheinlichkeit. Dieser
Aufruf nimmt denselben Weg wie dieser Endpunkt, unter dem User Path des Guardrails.
Eine Failover-Kette darf Provider mischen: Jedes Ziel erhält den Request in seiner
eigenen Form, und ein Ziel bei einem Provider ohne Decisions API oder eines, das
die Bilder des Requests nicht lesen kann (ein Kev-Server oder ein jev-Modell, das einen Bildlink
erhält), wird übersprungen, ohne einen Versuch zu verbrauchen. Kann das erste Ziel der Kette
die Bilder nicht lesen, beginnt der Request beim ersten Ziel, das dazu in der Lage ist. Die
folgende Kette sendet daher Text an Kev und Bilder an OpenAI.