Ir al contenido
GetAPI
Panel de control
Español
Apariencia
Notificaciones
Notificaciones
Cargando…
Menú

Recibir Responses por streaming desde GetAPI.ONE

Consuma un flujo de eventos enviados por el servidor, añada solo fragmentos de texto y trate los eventos completed, failed e incomplete como resultados finales distintos.

Elegir una ruta compatible

  • Use un modelo actual del catálogo cuyo endpoint declarado sea Responses.
  • Mantenga la clave API en un servidor o proceso local fiable.
  • Decida cómo mostrará el cliente el texto parcial y cómo se recuperará de una transmisión interrumpida.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

Leer el ciclo de vida de eventos

  1. Envíe stream=true mediante un SDK o cliente HTTP del servidor con los reintentos automáticos desactivados en la primera solicitud controlada.
  2. Añada al texto visible únicamente los contenidos de response.output_text.delta.
  3. Deténgase en response.completed y conserve los metadatos finales que necesite su aplicación.
  4. Presente response.failed y response.incomplete como resultados sin éxito; no marque texto parcial como completo.
  5. Trate un evento de error, excepción de transporte, EOF previo a la finalización o cancelación local como resultado sin éxito y cierre el flujo.
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")

Relacionar eventos con el estado de la interfaz

EventoAcción de la aplicación
response.output_text.deltaAñadir event.delta; no sustituir el texto ya mostrado.
response.completedMarcar éxito y finalizar el estado de carga.
response.failedMostrar el error estructurado y una acción segura de reintento.
response.incompleteMantener la salida parcial visiblemente incompleta y revisar los detalles de incompletitud.

Verificar el resultado esperado

  • El texto aparece progresivamente sin fragmentos duplicados.
  • La carga termina solo tras un evento final o un error de transporte.
  • Una conexión interrumpida nunca muestra un falso estado de éxito.

Gestionar errores de transporte y protocolo

  • Si no llegan eventos, verifique la ruta exacta /v1/responses, stream=true, el almacenamiento intermedio del proxy y el endpoint declarado del modelo.
  • Si la salida se repite, añada cada fragmento una vez y no combine la salida acumulada del SDK con eventos sin procesar.
  • Reintente solo antes de efectos visibles o con idempotencia de aplicación; una desconexión no prueba que la solicitud al proveedor no hiciera nada.

Mantener el streaming en el servidor

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

Próximos pasos