POST /v1/systemone bedient die System One API von TypeSafe: Ein Request
enthält einen state (den zu bewertenden Text oder Datensatz) und eine Map
typisierter Fragen, und die Antwort ist eine kalibrierte Wahrscheinlichkeit pro
Frage. Es handelt sich um eine Entscheidungs-API, nicht um einen Textgenerator,
daher leitet GoModel sie nativ weiter und übersetzt sie nie in Chat oder aus
Chat. Um dieselben Modelle mit den Request- und Antwortformaten von OpenAI zu
erreichen, verwenden Sie die Decisions API, die
GoModel in System One übersetzt.
Der Endpunkt ist verfügbar, sobald ein jev-Provider
(gehostetes Jev oder ein selbst gehosteter Kev-Server) oder ein
openrouter-Provider konfiguriert ist. Ohne einen solchen antwortet er mit
404.
Request und Antwort
POST {base_url}/v1/systemone. Richten Sie sie daher
mit Ihrem GoModel-Key auf das Gateway-Root (base_url="http://localhost:8080")
aus; siehe Jev / Kev.
Routen
Die Kev-Routen verhalten sich wie
/v1/systemone. Für OpenRouter werden sie
abgelehnt, da OpenRouter nur die Bewertungsroute bedient; ein gehosteter
TypeSafe-jev-Provider liefert für sie sein eigenes 404.
Was das Gateway tut
- Löst
modelwie bei jedem anderen Endpunkt auf: einen einfachen Namen, einen provider-qualifizierten Namen (jev/jev-latest) oder ein virtuelles Modell. Anschließend wendet es die Modell-Allowlist, die Rate-Limits und die Budgets des Aufrufers an. - Führt die Prompt-Guardrails des Workflows auf
stateaus. - Bedient einen identischen früheren Request aus dem Response-Cache.
- Leitet den Body weiter, wobei nur
model(der aufgelöste Name) undstate(falls ein Guardrail ihn bearbeitet hat) geändert werden. Fragen, Kriterien und alle anderen Felder erreichen den Provider Byte für Byte. - Gibt die Antwort unverändert weiter und erfasst sie im Audit-Log (Request-Typ Decisions) und in der Nutzung.
Bilder
Bild-Requests von TypeSafe funktionieren so, wie sie gesendet werden:assets im JSON-Body oder das
multipart/form-data-Formular von TypeSafe, mit dem JSON-Request als erstem
Part namens request und jedem Bild als File-Part, den ein Asset über part
benennt. Die TypeSafe-SDKs senden dieses Formular für Image-Objekte. GoModel
bettet jeden Bild-Part als data_base64 in sein Asset ein und leitet einen
einzigen JSON-Request weiter, sodass Guardrails, Cache und Failover beide
Formen gleich behandeln. Das Bild muss ein PNG oder JPEG sein; das format des
Assets bleibt erhalten, wenn es angegeben ist, und wird andernfalls aus den
Bytes des Bildes ermittelt. Ein Formular, das TypeSafe ablehnen würde, etwa ein
Part, den kein Asset verwendet, ein Asset, das einen fehlenden Part benennt,
oder ein Bild, das weder PNG noch JPEG ist, liefert 400. Senden Sie den
Header TypeSafe-Danger-Zone-Images: true, wie von TypeSafe verlangt; das
Gateway leitet ihn weiter. Kev-Server lesen nur Text.
Modelle
System-One-Modelle werden in
GET /v1/models als Utility-Modelle ohne
Generierungsmodus aufgeführt.
TypeSafe listet nur seine Aliase, akzeptiert aber jede versionierte ID, sodass
eine fest gepinnte Version funktioniert, ohne deklariert zu werden: GoModel
routet ein nicht gelistetes Modell an einen jev-Provider, wenn der Name angibt,
an welchen (jev/jev-1.13.0), oder – bei einem einfachen Namen –, wenn genau
ein jev-Provider konfiguriert ist. Ein virtuelles Modell kann eine Version auf
dieselbe Weise pinnen.
OpenRouter akzeptiert jev-latest selbst, GoModel routet aber anhand der
Katalog-IDs. Damit ein einfaches jev-latest (der Standard der TypeSafe-SDKs)
über OpenRouter weiterhin funktioniert, fügen Sie ein virtuelles Modell hinzu:
Caching
Bei aktiviertem Response-Cache wird ein identischer Request (gleiche Route, gleiches aufgelöstes Modell, gleiche Guardrails und gleicher Body nach Guardrail-Bearbeitungen) aus dem exakten Cache beantwortet (X-Cache: HIT (exact)) und in der Nutzung als Cache-Treffer erfasst. Der
semantische Cache bedient System One nie: Ein lediglich ähnlicher State ist
nicht dieselbe Entscheidung. Senden Sie Cache-Control: no-cache, um den Cache
für einen einzelnen Request zu umgehen.
Failover
Ein virtuelles Modell mit der Strategiefailover verschiebt einen Request zum
nächsten Ziel, wenn das aktuelle mit einem Verfügbarkeitsfehler fehlschlägt
(standardmäßig 429 oder 5xx, einschließlich des TypeSafe-Codes 529; siehe
Failover). Jedes Ziel erhält den Request in seiner
eigenen System-One-Form. Ein Ziel ohne diese API, etwa ein Chat-Modell, wird
übersprungen, ohne einen Failover-Versuch zu verbrauchen, und Client-Fehler wie
eine fehlerhafte Frage (422) werden ohne Failover zurückgegeben:
Guardrails
Guardrails sehenstate als eine einzelne User-Nachricht: einen String-State als
dessen Text, jeden anderen JSON-Wert als sein kodiertes JSON, das auch nach
einer Bearbeitung gültiges JSON sein muss. Das ist genau das, was
anonymisierende und blockierende Guardrails benötigen; beispielsweise wird eine
string_replace-Regel, die Kartennummern maskiert, auf state angewendet,
bevor er das Gateway verlässt. Die Fragen sind das feste Schema Ihrer Anwendung
und werden nicht offengelegt.
Bearbeitungen, für die ein Entscheidungs-Request keinen Platz hat, etwa ein
System-Prompt, der von einem auch für Chat-Modelle geltenden Guardrail
eingefügt wird, werden verworfen. Das Gateway protokolliert pro Art verworfener
Bearbeitung eine Warnung und Wiederholungen anschließend auf Debug-Ebene. Ein
Guardrail, der den Request selbst beantworten würde, blockiert ihn stattdessen,
da System-One-Aufrufer typisierte Antworten erwarten, keinen Text.
Nur die Prompt-Phase greift. Die Antwort besteht aus typisierten Werten, nicht
aus einer Completion, daher laufen Response- und Stream-Phasen-Guardrails nicht
darauf, und sie wird unverändert weitergegeben; ein Workflow, der solche
Guardrails für einen System-One-Request auswählt, protokolliert pro Guardrail
eine Warnung.
Fehler und Fehlbedienung
Der Endpunkt übersetzt nie und meldet es, wenn ein Request nicht funktionieren kann:Audit, Nutzung und Kosten
Jeder Aufruf ist ein Audit-Eintrag unter seiner Route, mit angefordertem und aufgelöstem Modell, Provider, Request- und Response-Body, Guardrail-Ergebnissen und Failover-Versuchen; filtern Sie das Audit-Log nach dem Request-Typ Decisions. Die Nutzung erfasstinput_tokens und output_tokens der
Antwort unter dem Modell, das geantwortet hat. OpenRouter meldet seine eigenen
usage.cost, die als Kosten des Requests erfasst werden; für gehostetes Jev
deklarieren Sie die Preise am Provider (siehe
Jev / Kev).