大模型流式输出配置:SSE 接口设置与常见超时排查

流式输出能让大模型边生成边返回内容,用户不用等到全部生成完才看到结果。
如果你正在自建或代理大模型服务,需要配置流式输出,核心就是让后端以 text/event-stream 格式持续推送数据,并确保中间的 Nginx 等代理不缓冲、不超时。
下面按准备、配置、避坑、验证的顺序说明,适用于 Linux 服务器 + Nginx + 常见后端框架的环境。

先确认你的服务是否支持流式接口

不是所有大模型 API 都默认开启流式。
以 OpenAI 兼容接口为例,请求体里需要带 stream: true。
你可以先用 curl 直接测试后端服务,绕过 Nginx,确认流式本身是否正常:

curl -N -X POST http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model","messages":[{"role":"user","content":"你好"}],"stream":true}'

如果终端里逐字或逐段出现 data: {...} 行,说明后端流式正常,问题可能出在代理层。
如果一次性返回全部内容,先检查后端代码是否真的用了流式生成器。

配置 Nginx 反向代理支持流式输出

Nginx 默认会缓冲上游响应,导致流式数据被攒着一起发。
需要在对应的 location 块中关闭缓冲和缓存,并适当延长超时时间。
编辑站点配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/:

location /v1/ {
    proxy_pass http://127.0.0.1:8000;
    proxy_http_version 1.1;
    proxy_set_header Connection '';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;

    # 关闭缓冲,让数据即时转发
    proxy_buffering off;
    proxy_cache off;
    chunked_transfer_encoding on;

    # 延长读超时,避免长回答被切断
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;
}

保存后执行 nginx -t 检查语法,再 nginx -s reload 重载。
注意 proxy_buffering off 是关键,少了这一项前端很可能还是“一次性蹦出来”。

后端返回头与数据格式要点

流式响应需要正确的 Content-Type 和逐条发送。
以 Python FastAPI 为例,核心是返回 StreamingResponse 并设置 media_type="text/event-stream":

from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

def event_generator():
    for token in ["你", "好", ",", "世界"]:
        yield f"data: {token}\n\n"
    yield "data: [DONE]\n\n"

@app.post("/v1/chat/completions")
async def chat():
    return StreamingResponse(event_generator(), media_type="text/event-stream")

每条消息以 data: 开头,以两个换行结束,这是 SSE 协议的基本要求。
如果前端收不到增量,先检查返回体里有没有多余的空行或错误的换行符。

常见故障与避坑清单

流式配置出错时,现象通常很固定,可以按下面顺序排查:

  • 前端一直转圈,最后一次性显示全部内容:优先检查 Nginx 是否加了 proxy_buffering off,以及后端是否真的逐条 yield。
  • 回答到一半断开:查看 Nginx 的 proxy_read_timeout 是否过短,同时检查后端生成逻辑是否有超时限制。
  • 浏览器控制台报 CORS 错误:流式接口同样需要正确设置跨域头,在 Nginx 或后端添加 Access-Control-Allow-Origin。
  • 使用 CDN 后流式失效:部分 CDN 会缓冲响应,需要确认 CDN 是否支持 SSE 或关闭缓冲。
  • 修改配置后不生效:执行 nginx -t 和 nginx -s reload 后,再用 curl -N 测试,避免只改文件未重载。

验证流式输出是否真正生效

配置完成后,不要只看页面效果。
用 curl 带 -N 参数请求经过 Nginx 的地址,观察输出节奏:

curl -N -X POST https://你的域名/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model","messages":[{"role":"user","content":"讲个短故事"}],"stream":true}'

如果终端里内容逐段出现,而不是等好几秒后一次性打印,说明代理层没有缓冲,流式配置基本正确。
再打开浏览器开发者工具的 Network 面板,查看该请求的 Response 是否持续有数据到达,也能辅助判断。

流式输出配置并不复杂,关键是把后端生成、代理转发、前端接收三个环节的缓冲和超时都对齐。
按本文步骤操作后,如果仍有异常,优先回看 Nginx 的 proxy_buffering 和超时设置,这两个位置最容易遗漏。

分享到:
上一篇
大模型JSON模式输出:从调用到解析的完整配置指南
下一篇
大模型SSE接口配置:从零实现流式输出
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意