GetAPI.ONE
Responses von GetAPI.ONE streamen
Verarbeiten Sie einen Server-Sent-Events-Stream, hängen Sie ausschließlich Text-Deltas an und behandeln Sie abgeschlossene, fehlgeschlagene und unvollständige Ereignisse als unterschiedliche Endzustände.
Kompatiblen Weg auswählen
- Verwenden Sie ein aktuelles Katalogmodell mit angegebenem Responses-Endpunkt.
- Bewahren Sie den API-Schlüssel in einem vertrauenswürdigen Server- oder lokalen Prozess auf.
- Legen Sie fest, wie der Aufrufer Teiltext anzeigt und nach einem unterbrochenen Stream fortfährt.
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEYEreignislebenszyklus verstehen
- Senden Sie stream=true über ein serverseitiges SDK oder einen HTTP-Client, wobei automatische Wiederholungen für die erste kontrollierte Anfrage deaktiviert sind.
- Hängen Sie ausschließlich Nutzdaten von response.output_text.delta an den sichtbaren Text an.
- Stoppen Sie bei response.completed und bewahren Sie die von Ihrer Anwendung benötigten abschließenden Antwortmetadaten auf.
- Zeigen Sie response.failed und response.incomplete als nicht erfolgreiche Ergebnisse an; kennzeichnen Sie Teiltext nicht als vollständig.
- Behandeln Sie ein Fehlerereignis, eine Transportausnahme, EOF vor Abschluss oder lokalen Abbruch als nicht erfolgreich und schließen Sie den Stream.
import os
from openai import OpenAI
terminal_event = None
try:
with OpenAI(
api_key=os.environ["GETAPI_ONE_API_KEY"],
base_url="https://www.getapi.one/v1",
timeout=30.0,
max_retries=0,
) as client:
with client.responses.create(
model="<RESPONSES_MODEL_ID_FROM_CURRENT_CATALOG>",
input="Give three concise deployment checks.",
stream=True,
) as stream:
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
terminal_event = event.type
print("\ncompleted")
break
elif event.type in {"response.failed", "response.incomplete", "error"}:
terminal_event = event.type
raise RuntimeError(f"stream ended with {event.type}: {event}")
except KeyboardInterrupt:
raise SystemExit("cancelled locally; the stream and client were closed")
if terminal_event != "response.completed":
raise RuntimeError("stream ended before response.completed")Ereignisse auf Oberflächenzustände abbilden
| Ereignis | Anwendungsaktion |
|---|---|
| response.output_text.delta | event.delta anhängen; bereits angezeigten Text nicht ersetzen. |
| response.completed | Erfolg markieren und Ladezustand beenden. |
| response.failed | Strukturierten Fehler und eine sichere Aktion zur Wiederholung anzeigen. |
| response.incomplete | Teilausgabe sichtbar als unvollständig kennzeichnen und Details zur Unvollständigkeit prüfen. |
Erwartetes Ergebnis prüfen
- Text erscheint schrittweise ohne doppelte Deltas.
- Das Laden endet erst nach einem Endereignis oder Transportfehler.
- Eine unterbrochene Verbindung zeigt niemals fälschlich Erfolg an.
Transport- und Protokollfehler behandeln
- Wenn keine Ereignisse eintreffen, prüfen Sie die exakte Route /v1/responses, stream=true, Proxy-Pufferung und die Endpunktangabe des Modells.
- Bei wiederholter Ausgabe hängen Sie jedes Delta genau einmal an und vermischen keine bereits vom SDK gesammelte Ausgabe mit Rohereignissen.
- Wiederholen Sie nur vor sichtbaren Nebenwirkungen oder mit Idempotenz auf Anwendungsebene; ein Verbindungsabbruch beweist nicht, dass die Upstream-Anfrage wirkungslos blieb.
Streaming serverseitig halten
Browser → your authenticated backend → GetAPI.ONE
server-held key only