各位大佬如何用 Java 实现 chatgpt 接口的流式返回,逐句回答

2023-04-10 18:10:11 +08:00
 xhf1024

postman 调用 openai 的接口是一次性返回的流数据要得等好久,使用基于 Python3.10 的 Tornado 异步非阻塞框架来实现 Server-sent events 通信是可以,但是 java 不知道怎么实现

5880 次点击
所在节点    Java
16 条回复
yazinnnn
2023-04-10 18:32:44 +08:00
随便一个 reactive 的客户端都可以吧,比如 reactor vertx mutiny 之类的
brader
2023-04-10 18:36:43 +08:00
对了,提醒你一点我踩过的坑,你测试的时候最好不要用 postman 测试,即使你的是流式输出接口,它也会等全部数据回来。
你最好用命令行测试,或者用浏览器测试,浏览器测试加响应头
Content-Type: text/event-stream // 以事件流的形式告知浏览器进行显示
Cache-Control: no-cache // 告知浏览器不进行缓存
X-Accel-Buffering: no // 关闭 nginx 之类的缓存
brader
2023-04-10 18:40:11 +08:00
下面是我用 php 实现的流式输出,并简单的解析出了 EventSource 消息,只把结果返回给前端,可以给你参考
qiyuey
2023-04-10 18:44:11 +08:00
我用的 kotlin flow
ByteCat
2023-04-10 18:58:56 +08:00
我用 JS 写的,rx.js 的 observable ,貌似 Java 也有,可以试试?不过我不是很熟悉 Java 。
你的 postman 不是最新的吧,我试了 postman 可以接受 POST 请求的 SSE ,并且是流式传输的。
TWorldIsNButThis
2023-04-10 19:01:31 +08:00
flow ?
java 9 加的那个
然后用 spring webflux
以前一直不知道这类技术有什么实际应用场景,近来才知道原来 chatgpt 在用这个
zoharSoul
2023-04-10 19:12:49 +08:00
netty
unco020511
2023-04-10 19:13:50 +08:00
K1W1
2023-04-10 19:18:55 +08:00
oldshensheep
2023-04-10 19:25:40 +08:00
cveoy
2023-04-10 23:39:45 +08:00
看看我接口就知道了
https://ai1.chagpt.fun/
jackwaycn
2023-04-11 10:16:22 +08:00
Spring SseEmitter
WashFreshFresh
2023-04-11 11:20:49 +08:00
websocket 就好了,原来搞语音识别返回文字效果挺好的。
sobev
2023-04-11 14:08:18 +08:00
jethroX
2023-04-11 14:39:41 +08:00
我是通过 http SSE 实现的,你可以搜一下你的 java 框架要怎么实现 sse 。
mmdsun
2023-08-22 09:57:37 +08:00
今天弄反应式项目集成 chatgpt ,发现 spring webflux 只需要一句话。。
https://www.baeldung.com/spring-server-sent-events

这个参考也不错: https://github.com/git-syl/chat-gpt-java-demo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/931323

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX