Übersicht
GoModel stellt OpenAI-kompatible Endpunkte der Responses API unter/v1/responses bereit.
Create-Requests durchlaufen die Pipeline für übersetztes Modell-Routing, sodass
virtuelle Modelle, Workflows, Guardrails, Failover, Nutzungs-Logging und
Response-Caching weiterhin greifen. Lebenszyklus- und Hilfsendpunkte nutzen
native Provider-Funktionen, sofern verfügbar, und geben explizite
Kompatibilitätsfehler zurück, wenn der gewählte Provider die angeforderte
Operation nicht unterstützt.
Das Verhalten einzelner Features, einschließlich gehosteter Tools und
Chat-übersetzter Provider, beschreibt
Responses-Kompatibilität.
Unterstützte Endpunkte
Gespeicherte Responses
Bei Aufrufen vonPOST /v1/responses speichert GoModel – sofern der Request
nicht store: false setzt – den normalisierten Response-Body sowie die
normalisierten Input-Items des Requests so, wie der Client sie gesendet hat
(bevor Guardrails sie bearbeiten und ohne den Verlauf, den eine
previous_response_id oder conversation hinzugefügt hat). Eine gestreamte
Response wird anhand ihres abschließenden Events gespeichert
(response.completed, response.incomplete oder response.failed). Der
Snapshot wird im Hintergrund geschrieben, nachdem die Response zurückgegeben
wurde, sodass die Speicherlatenz den Client nie verzögert. Ein
GET /v1/responses/{id}, der unmittelbar nach dem POST abgesetzt wird, kann
ankommen, bevor der Snapshot gespeichert ist. Ein geordnetes Herunterfahren
wartet auf ausstehende Snapshot-Schreibvorgänge, ein harter Prozessabbruch kann
jedoch einen noch nicht abgeschlossenen verlieren. Ein fehlgeschlagener
Snapshot-Schreibvorgang wird protokolliert und in der Metrik
gomodel_response_snapshot_store_failures_total gezählt.
Das ermöglicht:
GET /v1/responses/{id}für Responses, die über GoModel erstellt wurden.GET /v1/responses/{id}/input_itemsfür den ursprünglichen normalisierten Input.DELETE /v1/responses/{id}, auch wenn der Provider kein natives Löschen von Responses anbietet.previous_response_idbei Chat-übersetzten Providern wie Anthropic und Gemini: GoModel folgt der gespeicherten Response und jeder Response, aus der sie verkettet wurde, und stellt deren Input-Items und Output dem neuen Input voran, sodass der Provider in jedem Turn die gesamte Kette erhält. Die Response nennt ihren Vorgänger inprevious_response_id, ob gestreamt oder nicht. Bei diesen Providern liefert eine ID, die nicht gespeichert ist (die vorherige Response wurde mitstore: falsegesendet) oder zu einem anderen Tenant gehört, 404. Native Responses-Provider erhalten die ID selbst und lösen sie auf ihrer Seite auf; sie benötigen also keinen GoModel-Snapshot. Eine ID, die GoModel für einen Chat-übersetzten Provider vergeben hat, wird auch für sie wiedergegeben, sodass eine Kette mitten im Gespräch von Gemini oder Anthropic zu OpenAI wechseln kann. Die Eigentümerschaft wird bei jedem Provider durchgesetzt: Eine ID, deren gespeicherte Response zu einem anderen User Path gehört, liefert 404, statt im Upstream aufgelöst zu werden, während eine ID, die GoModel nie gespeichert hat, weiterhin weitergeleitet wird.
conversation – in den Input übernommen, bevor die
Guardrails der Prompt-Phase laufen. Sie prüfen und
überarbeiten ihn also wie jeden anderen Input: Eine gespeicherte Response
enthält das, was ihr Client gesehen hat, und eine
presidio-Guardrail anonymisiert die dort
wiederhergestellten Werte erneut, bevor der nächste Turn den Provider erreicht.
Auch ein nativer primärer Provider erhält statt der ID den wiedergegebenen
Verlauf, wenn auf dem Prompt eine Guardrail läuft, die Inhalte umschreibt (eine
Instanz, die nur markiert oder blockiert, zählt nicht), oder wenn ein
Failover-Ziel Chat-übersetzt ist. Ohne eine solche Guardrail wird die ID
unverändert weitergeleitet, sodass der Provider die Kette weiterhin aus seinem
eigenen Zustand bedient.
Hintergrund-Responses
background: true kehrt sofort mit einem queued-Snapshot zurück. Da dieser
Snapshot nicht endgültig ist, liest GET /v1/responses/{id} ihn bei jeder
Abfrage erneut von dem Provider, der ihn erstellt hat, und speichert das
Ergebnis, sobald die Response einen abschließenden Status erreicht
(completed, incomplete, failed oder cancelled). Die übliche SDK-Schleife
– abfragen, bis der Status abschließend ist, dann output lesen – funktioniert
daher über das Gateway. Abschließende Snapshots werden ohne Upstream-Aufruf aus
dem Speicher bedient. Schlägt die Aktualisierung fehl, wird der gespeicherte
Snapshot unverändert zurückgegeben.
Hintergrund-Creates werden nie aus dem
Response-Cache bedient: Ein queued-Body enthält eine ID,
die zur Response eines einzelnen Aufrufers gehört.
Native Provider-Abfrage
Wurde eine Response nicht über den aktuellen GoModel-Prozess oder den Response-Speicher erstellt, können Lebenszyklus-Endpunkte dennoch eine native Provider-Abfrage nutzen. Geben Sie den Provider an, wenn die Response-ID nicht lokal gespeichert ist:Input-Items
GoModel normalisiert gespeicherten Input in OpenAI-kompatible Input-Items für Responses. Ein String-Input wird zu einer Benutzernachricht mit eineminput_text-Content-Item:
Kompatibilitätsfehler
Manche Provider unterstützen nicht jeden Lebenszyklus- oder Hilfsendpunkt der Responses API. Kann der gewählte Provider eine Operation nicht ausführen, gibt GoModel einen OpenAI-kompatiblen Fehler zurück:invalid_request_error, damit die Menge der öffentlichen Fehlertypen
geschlossen bleibt. Der Code unsupported_response_operation kennzeichnet die
nicht unterstützte Operation und wird mit HTTP 501 Not Implemented
zurückgegeben.