-
Notifications
You must be signed in to change notification settings - Fork 511
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
streamHandler
返回的 streamData
存在截断问题
#542
Comments
streamHandler
返回的 streamData
存在问题streamHandler
返回的 streamData
存在截断问题
看起来有这个可能,不过这个项目并没有使用 ningx 相关的显式配置,而是采用的 Vercel edge function 的默认配置。 尝试在其他桌面客户端比如 OpenCat、Openai Translator 上使用也没有遇到类似截断的问题,所以才猜测是不是 Bob 在处理数据时存在问题 |
这个出现概率高吗? 如果其他客户端都没有问题的话,我后面也检查下是不是 Bob 网络库的问题,不过这个可能较小。 |
如果超过 3 个单词以上 80% 的几率会出现截断 |
@liby 考虑了下,难免会有截断的情况,参考 openai 官方代码做个兼容逻辑吧
https://github.com/openai/openai-cookbook/blob/main/apps/file-q-and-a/nextjs/src/services/openai.ts |
感谢提供思路,已解决 |
@ripperhe 最近从同事那里得到反馈说这个问题又出现了,Debug 了一下,发现部署在 Vercel Edge function 上 的 OpenAI API 返回的流数据除了截断的问题以外,还有顺序随机的问题( 比如我尝试翻译:"Too easy! This will connect to the OpenAI API and return the response to the client. The only thing we need to do now is modify the response to be a stream." 得到结果:「OpenAI API并将响。现在应为流。」
而且这个问题还不是稳定复现的;且有些时候还会出现在数据流中间就会出现 我 Debug 了一天,没有什么头绪,想请教一下作者有什么好的建议嘛 😢 |
所以服务器返回的数据就是乱的对吧,而且每一段数据里面也没有可以用来排序的参数,我也没啥思路 😂,有见到其他 App 有这种问题吗? 有没有抓包验证过 Bob 日志和服务器实际返回的顺序是一致的,不过 Bob 用的是主流的网络框架,应该不存在把顺序搞乱这种问题。 |
Charles 抓包看了没问题,不过就像你之前讲过的,因为截断的流式数据最终会合并在一起展示,所以抓包工具看不出来问题也是正常的。 但是从 Console 输出的 log(在代码里手动打印返回的 顺着这个问题我找到了一个 issue:中文字符截断导致乱码问题,虽然问题导致的结果不同,但是导致问题的原因是高度相似的,我还试了一下,中译英返回的流数据也存在被截断的情况,但尝试了很多次都没有流数据乱序的问题,翻译结果也是对的。 比如我将「有没有抓包验证过 Bob 日志和服务器实际返回的顺序是一致的,不过 Bob 用的是主流的网络框架,应该不存在把顺序搞乱这种问题。」翻译成英文,在 Console 中看到的日志:
|
确实,抓包结果里面数据最终会合并在一起,以致于看不出来数据传输过程是否有「截断」,不过数据返回的顺序都有问题的话,那我理解抓包里面的结果合并起来之后也应该是错乱的。 那目前看起来「截断」能兼容,但是「顺序错乱」无解。我也没啥思路,后面有啥思路再同步给你。 |
运行环境
描述问题
在请求经过代理的 OpenAI API 时,
streamData.text
出现截断的问题,模板项目是 chatbot-ui,相关的代码在 chatbot-ui/blob/main/pages/api/chat.ts通过 Console 看到失败的日志 log,log 是在这一行下面打印的
通过抓包看到 Response 返回的数据没有问题:
Response
The text was updated successfully, but these errors were encountered: