Skip to main content
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

Richten Sie beim OpenAI-SDK base_url auf das Gateway:

Jev und Kev

Ein jev-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 Header TypeSafe-Danger-Zone-Images: true hinzu. GoModel ruft für Jev keine Bildlinks ab, daher liefert eine https-Bild-URL 400; detail wird 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-Modell 400: GoModel behandelt einen jev-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 Boolean true in derselben Frage kollidieren und werden abgelehnt.
  • prompt_cache_key, prompt_cache_options und safety_identifier werden verworfen.
  • Eine Frage, die System One unbeantwortet lässt, kommt als refusal zurü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 Endpunkt model 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.

Fehler

Zuletzt geändert am 24. Oktober 2026