经常有人说ChatGPT很慢,即便是提速了之后还是慢。我看到有人发的测试图,然后自己也测试一下,发现我这次测出来的速度并不慢。刚刚,我遇到了Reconnection 5/5的问题
stream disconnected before completion: IO error: Broken pipe (os error 32)
以往我就是等它继续了。但是今天我突发奇想,新建一个对话,然后让Codex分析,这次故障的原因。Codex分析说,这个对话原本使用的是WebSockets,然后再5次重试之后,换成了http的访问方式。但是在我这里,http的访问是很慢的。因此,我担心一旦回退到http的方式,之后的对话都会继续使用http。
我使用了多种方式进行测试。首先是新建一个对话,然后让Codex分析,Codex说这个新对话还是使用的WebSockets,然后我继续刚刚出错的对话,Codex说这个继续使用了http。于是我退出Codex,重新开,然后继续刚刚出错的那个对话。结果那个对话虽然一开始恢复使用WebSockets了,但是它立刻连续失败了5次,然后又回退到http。我问Codex这种情况怎么办。Codex让我新建一个session,然后重新说明任务。这次终于好了。
总结
当长任务遇到WebSokets失败之后,最好的办法就是新开一个对话,然后重新描述任务。否则就会回退到http,这会导致对话变得很慢,根源是
WebSocket 在长任务中可以复用连接和近期响应状态,减少每次继续请求的开销;HTTP 回退会失去这项优势。