虽迟但到,这周给我的小玩具 GeekChat 新增了对 stream 响应的支持,实现边回复边输出,感兴趣可以体验下:GeekChat —— 支持语音的免费体验版 ChatGPT。前端交互还有待优化,放到下个迭代吧。
由于 GeekChat 是用 Laravel + Vue3 实现的,所以也必须依赖这套技术栈实现 stream 流式响应,对应的实现源码已经提交到 Github:https://github.com/geekr-dev/geekchat,如果觉得对你有帮助,顺手点个 star 。
用到的东西:
前端基于 EventSource 访问后端 SSE 端点后端基于 php curl 自带的流式响应支持分块传输基础设施层使用了支持 stream 响应的 OpenAI 代理: https://open2.aiproxy.xyz (源码在这里:https://github.com/geekr-dev/openai-proxy)
注意点:
由于用到了 header、ob_flush、flush 这些函数,所以不支持基于 Swoole 、RoadRunner 之类常驻内存机制驱动的 PHP HTTP 服务器,在部署到生产环境的时候需要注意这一点。
geekchat, stream, PHP, 响应