Ir al contenido
GetAPI
Español
Menú

GetAPI.ONE

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