Pular para conteúdo
GetAPI
Português (Brasil)
Menu

GetAPI.ONE

Receber Responses por streaming de GetAPI.ONE

Consuma eventos enviados pelo servidor, acrescente apenas deltas de texto e trate completed, failed e incomplete como resultados terminais distintos.

Escolher um caminho compatível

  • Use modelo atual com endpoint declarado Responses.
  • Mantenha a chave API em servidor ou processo local confiável.
  • Decida como exibir texto parcial e recuperar um fluxo interrompido.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

Ler o ciclo de eventos

  1. Envie stream=true por SDK ou cliente HTTP do servidor, desativando repetições automáticas na primeira solicitação controlada.
  2. Acrescente ao texto visível somente conteúdos de response.output_text.delta.
  3. Pare em response.completed e preserve os metadados finais necessários.
  4. Apresente response.failed e response.incomplete como resultados sem sucesso; não marque texto parcial como completo.
  5. Trate evento de erro, exceção de transporte, EOF antes da conclusão ou cancelamento local como falha e feche o fluxo.
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")

Mapear eventos ao estado da interface

EventoAção da aplicação
response.output_text.deltaAcrescentar event.delta; não substituir o texto já exibido.
response.completedMarcar sucesso e encerrar o carregamento.
response.failedMostrar erro estruturado e ação segura de repetição.
response.incompleteManter saída parcial visivelmente incompleta e examinar detalhes de incompletude.

Verificar o resultado esperado

  • O texto aparece incrementalmente sem deltas duplicados.
  • O carregamento termina apenas após evento terminal ou erro de transporte.
  • Conexão interrompida nunca exibe falso sucesso.

Tratar erros de transporte e protocolo

  • Se não chegarem eventos, verifique /v1/responses exato, stream=true, buffer do proxy e declaração de endpoint do modelo.
  • Se a saída se repetir, acrescente cada delta uma vez e não combine a saída acumulada do SDK com eventos brutos.
  • Repita somente antes de efeitos visíveis ou com idempotência de aplicação; desconectar não prova que o provedor não processou nada.

Manter streaming no servidor

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

Próximos passos