news 2026/5/1 9:48:25

AI 流式对话该怎么做?SSE、fetch、axios 一次讲清楚

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI 流式对话该怎么做?SSE、fetch、axios 一次讲清楚

在做AI 对话产品时,很多人都会遇到一个问题:

为什么有的实现能像 ChatGPT 一样逐字输出,而有的只能“等半天一次性返回”?

问题的核心,往往不在模型,而在前后端的流式通信方式

本文从实战出发,系统讲清楚SSE、fetch、axios 在 AI 流式对话中的本质区别与选型建议

先给结论(重要)

AI 流式对话的正确打开方式:

  • ✅ 首选:fetch + ReadableStream
  • ✅ 可选:SSE(EventSource)
  • ❌ 不推荐:axios

如果你现在用的是 axios,还在纠结“为什么没有逐 token 输出”,可以直接往下看结论部分。

AI 流式对话的本质需求

在传统接口中,请求和响应通常是这样的:

请求 → 等待 → 返回完整结果

但 AI 对话不是。

AI 流式对话的真实需求是:

  • 模型逐 token 生成
  • 前端边接收、边渲染
  • 连接可持续数十秒
  • 用户能感知“正在思考 / 正在输出”

这决定了:必须支持真正的 HTTP 流式响应

SSE、fetch、axios 的本质区别

在对比之前,先明确一个容易混淆的点:

1、SSE 是「协议能力」

SSE(Server-Sent Events)是一种基于 HTTP 的流式推送协议

  • Content-Type: text/event-stream
  • 服务端可以不断向客户端推送数据
  • 浏览器原生支持EventSource

它解决的是:“服务端如何持续推送数据”

2、fetch / axios 是「请求工具」

工具本质
fetch浏览器原生 HTTP API
axios对 XHR / fetch 的封装库

它们解决的是:“前端如何发请求、拿响应”

常用流式方案

SSE:最简单的流式方案

constes=newEventSource('/api/chat/stream')es.onmessage=(e)=>{console.log(e.data)}

优点

  • ✅ 原生支持流式
  • ✅ 自动重连
  • ✅ 心跳、事件类型清晰
  • ✅ 非常适合AI 单向输出

缺点(关键)

  • ❌ 只支持GET
  • ❌ 不能自定义 Header(鉴权不友好)
  • ❌ 只能服务端 → 客户端

适合场景:AI 回答输出推理过程/日志流实时通知类数据

fetch + ReadableStream(推荐)

这是目前AI 产品中最主流、最灵活的方案

constres=awaitfetch('/api/chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({prompt})})constreader=res.body.getReader()constdecoder=newTextDecoder()while(true){const{value,done}=awaitreader.read()if(done)breakconstchunk=decoder.decode(value)console.log(chunk)}

为什么它是首选?

  • ✅ 支持 POST(可传 prompt、上下文)
  • ✅ 可自定义 Header(token、traceId)
  • ✅ 真正的 chunk / token 级流式
  • ✅ 与 OpenAI / Claude 接口完全一致
  • ✅ Web / Node / Edge Runtime 通用

一句话总结fetch + stream是目前AI 流式对话的标准

axios:为什么不适合 AI 流式?

这是很多人踩坑最多的地方。

常见误解

axios.post('/api/chat',data,{onDownloadProgress(e){console.log(e)}})

看起来像“流式”,但实际上axios 的真实问题

  • 浏览器端基于 XHR
  • 响应会被缓冲
  • onDownloadProgress不是 token 级回调
  • 延迟明显、体验差

结论:axios 在浏览器端不支持真正的流式响应

它更适合普通 REST API、表单提交、数据请求,但不适合 AI 流式输出

总结

方案真流式POSTHeader推荐度
SSE (EventSource)⭐⭐⭐
fetch + stream⭐⭐⭐⭐⭐
axios
  • SSE 是流式协议
  • fetch 是流式容器
  • axios 是传统请求工具

如果你正在做 AI 产品,通信层选错,后面再怎么优化模型和前端体验,都会事倍功半。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:49:00

导师推荐!专科生必看8个AI论文平台测评与推荐

导师推荐!专科生必看8个AI论文平台测评与推荐 2026年专科生AI论文平台测评:为何值得一看? 随着人工智能技术的不断进步,AI论文平台已成为越来越多专科生撰写论文的重要工具。然而,面对市场上琳琅满目的选择&#xff0c…

作者头像 李华
网站建设 2026/5/1 6:49:06

Agent 成新基建,2030 年渗透率 90%,7 大赛道 + 标杆厂商深度拆解

前言 当生成式 AI 从 “内容工具” 进化为 “自主执行者”,智能体(Agent)正以国家战略为背书,掀起一场生产力革命。国务院《关于深入实施 “人工智能 ” 行动的意见》明确将其列为 “新基础设施”,硬性要求 2027 年应用…

作者头像 李华
网站建设 2026/5/1 7:51:26

交通仿真软件:Aimsun_(7).信号控制与优化

信号控制与优化 1. 信号控制的基本概念 信号控制是交通仿真中一个重要的组成部分,它通过控制交通信号灯的切换时间来优化交通流量。在Aimsun中,信号控制可以通过多种方式实现,包括固定时间信号控制、自适应信号控制和基于优化模型的信号控制。…

作者头像 李华
网站建设 2026/5/1 6:54:18

揭秘 Spring Boot 事务:动态增强的底层实现与核心组件

在分布式系统和复杂业务场景中,事务管理是保障数据一致性的核心技术之一。Spring Boot 提供的声明式事务机制,通过 “动态” 方式简化了事务配置,让开发者无需手动编写事务控制代码,仅通过简单注解即可实现事务管理。本文将从 “问…

作者头像 李华
网站建设 2026/4/27 16:40:29

ES在SpringBoot集成使用

1. 在Docker中安装Elasticsearch 这里不了解docker甚至还没安装虚拟机的小伙伴可以去黑马的视频下找到资源,去下一个虚拟机 这里就不对ES进行过多介绍了,具体的效果去b站看看叭,这里直接速成使用 安装ES并启动 docker pull elasticsearch &l…

作者头像 李华
网站建设 2026/5/1 6:49:24

基于微信小程序的新鲜到家生鲜超市销售系统(毕设源码+文档)

课题说明本课题聚焦基于微信小程序的新鲜到家生鲜超市销售系统的设计与实现,核心目标是解决传统生鲜超市销售中线下客流有限、商品展示不全面、订单处理效率低、配送调度混乱、生鲜保鲜追溯难及用户购物体验差等痛点问题。系统深度依托微信小程序生态优势&#xff0…

作者头像 李华