Zum Inhalt springen
GetAPI
Deutsch
Menü

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.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

Ereignislebenszyklus verstehen

  1. Senden Sie stream=true über ein serverseitiges SDK oder einen HTTP-Client, wobei automatische Wiederholungen für die erste kontrollierte Anfrage deaktiviert sind.
  2. Hängen Sie ausschließlich Nutzdaten von response.output_text.delta an den sichtbaren Text an.
  3. Stoppen Sie bei response.completed und bewahren Sie die von Ihrer Anwendung benötigten abschließenden Antwortmetadaten auf.
  4. Zeigen Sie response.failed und response.incomplete als nicht erfolgreiche Ergebnisse an; kennzeichnen Sie Teiltext nicht als vollständig.
  5. Behandeln Sie ein Fehlerereignis, eine Transportausnahme, EOF vor Abschluss oder lokalen Abbruch als nicht erfolgreich und schließen Sie den Stream.
python
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

EreignisAnwendungsaktion
response.output_text.deltaevent.delta anhängen; bereits angezeigten Text nicht ersetzen.
response.completedErfolg markieren und Ladezustand beenden.
response.failedStrukturierten Fehler und eine sichere Aktion zur Wiederholung anzeigen.
response.incompleteTeilausgabe 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

text
Browser → your authenticated backend → GetAPI.ONE
                 server-held key only

Nächste Schritte