微信扫码
添加专属顾问
我要投稿
在大模型应用时代,SSE和WebSocket如何成为通信协议的新标配?核心内容:1. 大模型推理需求激增,性能提升主战场转移2. SSE和WebSocket的定义及其在大模型应用中的优势3. SSE和WebSocket的技术挑战及应对策略
What's Next?
SSE 和 WebSocket 是什么?
全双工通信:客户端和服务器可以同时发送和接收数据。
大模型应用出现前的主流网络通信协议是什么?
基于请求-响应模型。
简单易用:HTTP 协议设计简单,易于实现和使用。
为什么大模型应用没有沿用 Web 类应用的主流通信协议?
实时对话:用户与模型进行连续交互,模型需要即时响应。例如通义千问,HIgress 官网的答疑机器人,都是需要依据客户问题,即时做出响应。
仅支持单向通信,即请求-响应模型,必须是客户端发起时,服务端才能做出响应,无法进行双向通信,导致无法支持流式输出,无法处理长时任务。
为什么 SSE 和 WebSocket 更适合支持大模型应用?
SSE 的工作流程如下:
客户端通过 JavaScript 的 EventSource
API 向服务器发起 HTTP 请求。
Accept: text/event-stream
,表明客户端支持 SSE 协议。const eventSource = new EventSource('https://example.com/sse-endpoint');
Content-Type: text/event-stream
:表明响应内容为 SSE 数据流。
Cache-Control: no-cache
:禁用缓存,确保数据实时更新。Connection: keep-alive
:保持长连接。HTTP/1.1 200 OK
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
data:
开头,以两个换行符 \n\n
结束。data: {"message": "Hello"}
data: {"message": "World"}
EventSource
的 onmessage
事件监听服务器推送的数据。eventSource.onmessage = (event) => {
console.log('Received data:', event.data);
};
服务器可以通过发送 retry:
字段指定重连时间(毫秒)。
示例重连设置:
retry: 5000
stream=True
参数请求流式响应,通过开发者工具或 curl
查看返回的 Content-Type
,若为 text/event-stream
,则明确为 SSE。curl -X POST "https://api.deepseek.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-chat", "messages":[{"role":"user","content":"Hello"}], "stream":true}' \
-v # 查看详细响应头
< HTTP/1.1 200 OK
< Content-Type: text/event-stream
< Transfer-Encoding: chunked
data: {...}\n\n
,符合 SSE 规范[1]。data: {"id":"123","choices":[{"delta":{"content":"Hi"}}]}
data: [DONE]
WebSocket 的工作流程如下:
Upgrade: websocket
:表明客户端希望升级到 WebSocket 协议。Connection: Upgrade
:表明客户端希望升级连接。Sec-WebSocket-Key
:随机生成的 Base64 编码字符串,用于握手验证。GET /ws-endpoint HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Upgrade: websocket
:确认协议升级。Connection: Upgrade
:确认连接升级。Sec-WebSocket-Accept
:基于客户端的 Sec-WebSocket-Key
计算的值,用于验证握手。HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
{"message": "Hello"}
[0x01, 0x02, 0x03]
Close Frame:
- Code: 1000 (Normal Closure)
- Reason: "Connection closed by client"
实时通信协议的技术挑战和应对方案
软件变更和服务扩缩容导致的稳定性风险
大带宽导致内存快速上涨的稳定性风险和带宽成本
高延时导致防范恶意攻击的资源成本增高
认证鉴权:对来自客户端的请求,进行合规性的校验。基于具体的业务需求,选择第三方的认证协议,从我们服务的客户经验上看,选择 OAuth2、JWT 的居多。
What's Next?
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-26
Claude 3.7 Sonnet一战封神,画骑车鹈鹕、一键生成贪吃蛇,全网就它行
2025-02-26
GPT-4.5发布时间越来越近,OpenAI安卓客户端已经有了相关信息,Pro用户可以做好准备,Plus用户请往后
2025-02-26
AI 云计算巨头Snowflake CEO专访:DeepSeek是好模型,而ChatGPT是一款好产品
2025-02-26
实测Claude 3.7:3200行代码一口气输出,物理规律手拿把掐,弱智吧已失守
2025-02-26
Claude 新模型一手实测:朴素,强大,与艺术之美
2025-02-26
一文读懂AI智能体的原理类型 功能优势和最常见使用场景
2025-02-25
Claude 3.7:AI领域的重磅更新,这些强大功能让人惊叹!
2025-02-25
深入理解Reasoning LLMs
2024-08-13
2024-06-13
2024-09-23
2024-08-21
2024-05-28
2024-07-31
2024-08-04
2024-04-26
2024-07-09
2024-09-17