AI API 流式输出怎么用?OuraiC 的 SSE 与客户端缓冲排查

流式输出把结果分批返回,减少用户等待完整答案的时间。OuraiC 是否支持某个模型与协议的流式行为,需用当前分组实际测试。非流式成功不等于所有流式事件都兼容。

AI API 流式输出怎么用?OuraiC 的 SSE 与客户端缓冲排查,OuraiC 配置与检查要点示意图

图:按本文操作要点制作的说明图,不是后台或调用成功截图。

Python 示例

import os
from openai import OpenAI
client = OpenAI(
    base_url="https://ouraic.cn/v1",
    api_key=os.environ["OURAIC_API_KEY"],
    timeout=60.0,
)
stream = client.chat.completions.create(
    model=os.environ["OURAIC_MODEL"],
    messages=[{"role": "user", "content": "解释流式输出,三句话"}],
    stream=True,
)
for part in stream:
    if part.choices:
        text = part.choices[0].delta.content
        if text:
            print(text, end="", flush=True)
print()

这只处理普通文本增量,不是完整工具调用、思考或所有事件解析器。模型和分组需提前确认,本文没有提供实测成功截图。

一直等到最后才显示

可能是模型首段生成时间、反向代理缓冲、框架收集全部内容或前端渲染方式。分别查看上游是否持续返回事件,以及自己的后端是否及时转发。

不要仅因为前端一次显示,就认定站点没有流式。也不要关闭所有缓冲设置而不确认实际链路。

增量不能按完整对象处理

每个事件可能只含部分文本、元数据或工具参数片段。有些事件没有 choices 或没有文本,解析器需按协议处理。Responses 与 Chat Completions 的事件结构不同。

工具参数还可能分段到达,不能把每一段当成完整 JSON 执行业务动作。

用户中断与费用

关闭页面或取消请求,不必然意味着上游停止生成或绝不计费。核对客户端取消是否传到后端,再查看本站日志。

重试流式请求也可能产生重复生成,给次数与任务设边界,不自动把未显示部分视为免费。

验证顺序

先做短文本流式,记录首段和结束;再测试代理转发;最后测试工具和多轮。保留脱敏事件样例,避免公开输入与 Key。

超时见 请求超时,限流见 429 排查。