跳转到正文
GetAPI
简体中文
菜单

GetAPI.ONE

流式接收 GetAPI.ONE Responses

消费 Server-Sent Events 流,只追加文本增量,并将 completed、failed 与 incomplete 作为不同的终止结果处理。

选择兼容路径

  • 使用当前目录中明确声明 Responses 端点的模型。
  • 将 API 密钥保存在可信服务端或本地进程中。
  • 预先决定调用方如何显示部分文本以及如何从中断中恢复。
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

读取事件生命周期

  1. 通过服务端 SDK 或 HTTP 客户端发送 stream=true,首次受控请求禁用自动重试。
  2. 仅将 response.output_text.delta 的 payload 追加到可见文本。
  3. 在 response.completed 时停止,并保留应用所需的最终响应元数据。
  4. 将 response.failed 与 response.incomplete 作为非成功结果展示,不要把部分文本标成已完成。
  5. 将 error 事件、传输异常、完成前 EOF 或本地取消视为非成功,并关闭流。
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")

将事件映射到界面状态

事件应用动作
response.output_text.delta追加 event.delta,不要替换已渲染文本。
response.completed标记成功并关闭加载状态。
response.failed展示结构化错误与安全重试入口。
response.incomplete保留部分输出并明确标记未完成,同时检查 incomplete details。

验证预期结果

  • 文本逐步出现且没有重复增量。
  • 仅在终止事件或传输错误后结束加载。
  • 连接中断时绝不显示虚假的成功状态。

处理传输与协议错误

  • 若没有事件到达,检查准确的 /v1/responses 路径、stream=true、代理缓冲与模型端点声明。
  • 若输出重复,只追加每个 delta 一次,不要同时混用 SDK 累积结果与原始事件。
  • 仅在无可见副作用前重试,或使用应用层幂等机制;断连并不能证明上游请求未执行。

在服务端处理流式调用

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

下一步