You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wanghanlin
20d9a889ac
fix(sdk): 流式零内容时降级路径未渲染答案,界面永久停在「正在思考...」
问题:第三方页面反馈「对话框一直显示正在思考...,但控制台里请求与响应数据都正常」。
定位:服务端这次的流式响应只回了「开场 role 帧 + finish_reason=stop 帧 + [DONE]」三个控制帧、
零内容(服务端成因见后一个提交)。SDK 的 sendStreamMessage 在 onDone 里发现零内容时确实会
降级再发一次同步 /ai/chat,但该分支只写 `chatRequest(...).then(resolve)` —— 既不渲染气泡也不
收掉 loading;而 produceAIReply 的 streaming 分支把「渲染气泡 + 收 loading」全权委托给了
onChunk 回调,这条路径拿不到 onChunk。结果同步拿到的答案被静默丢弃、loading 永不消失。
- 降级路径补齐 hideLoading + renderAIBubble(复用 dom.ts 已有实现,终态与非流式分支一致)
- 同一函数另一处同类出口:首个 token 之前点「停止生成」时 loading 同样不会被收,且会把一条
空 AI 消息写进历史。补 hideLoading;并在 produceAIReply 加守卫:aiContent 为空串时不 push、
不落库、不派发 csk:newMessage(避免历史里多出空气泡)
- 流式零内容时上报 onError code=stream_empty,不再静默;README 补该错误码与触发方式说明
验证:用逐字复刻线上那 3 帧的 mock 流驱动真实 SDK(puppeteer)——降级拿到的答案被正常渲染成
气泡、「正在思考...」消失、onError 收到 stream_empty,请求序列与线上 HAR 一致;正常带内容的流
不受影响(errors 为空、syncFallbackCalls=0);首 token 前中止时 loading 消失且历史无空消息。
client 单测 92 个全绿。
(static/sdk/test.html 仅两条 link 顺序变化,hash 未变,属构建产物顺序抖动)
|
2 weeks ago |
| .. |
|
wrapper
|
初始化spring boot项目,测试spring ai框架是否能正常调用ai大模型
|
1 year ago |