Skip to main content

Ü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 von POST /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_items für den ursprünglichen normalisierten Input.
  • DELETE /v1/responses/{id}, auch wenn der Provider kein natives Löschen von Responses anbietet.
  • previous_response_id bei 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 in previous_response_id, ob gestreamt oder nicht. Bei diesen Providern liefert eine ID, die nicht gespeichert ist (die vorherige Response wurde mit store: false gesendet) 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.
Der wiedergegebene Verlauf wird – wie die Items einer vom Gateway verwalteten 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:
Ohne gespeicherte Response oder Provider-Hinweis prüft GoModel die Provider, die native Lebenszyklus-Unterstützung für Responses bieten. Ist kein Lebenszyklus-Routing verfügbar, gibt GoModel einen Kompatibilitätsfehler zurück. Ist Lebenszyklus-Routing verfügbar, kann aber kein Provider die Response liefern, gibt GoModel einen normalen Not-Found-Fehler zurück.

Input-Items

GoModel normalisiert gespeicherten Input in OpenAI-kompatible Input-Items für Responses. Ein String-Input wird zu einer Benutzernachricht mit einem input_text-Content-Item:
Strukturierte Input-Arrays behalten Nachrichten-, Function-Call- und Function-Call-Output-Items nach Möglichkeit bei.

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:
GoModel verwendet für nicht unterstützte Operationen OpenAIs Typ 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.

Beispiel

Eine Response erstellen:
Später abrufen:
Die gespeicherten Input-Items auflisten:
Zuletzt geändert am 24. Oktober 2026