V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xhf1024
V2EX  ›  Java

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

  •  
  •   xhf1024 · 2023-04-10 18:10:11 +08:00 · 5995 次点击
    这是一个创建于 625 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2023-08-22 09:57:37 +08:00
    yazinnnn
        1
    yazinnnn  
       2023-04-10 18:32:44 +08:00 via Android
    随便一个 reactive 的客户端都可以吧,比如 reactor vertx mutiny 之类的
    brader
        2
    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
        3
    brader  
       2023-04-10 18:40:11 +08:00
    下面是我用 php 实现的流式输出,并简单的解析出了 EventSource 消息,只把结果返回给前端,可以给你参考
    qiyuey
        4
    qiyuey  
       2023-04-10 18:44:11 +08:00
    我用的 kotlin flow
    ByteCat
        5
    ByteCat  
       2023-04-10 18:58:56 +08:00
    我用 JS 写的,rx.js 的 observable ,貌似 Java 也有,可以试试?不过我不是很熟悉 Java 。
    你的 postman 不是最新的吧,我试了 postman 可以接受 POST 请求的 SSE ,并且是流式传输的。
    TWorldIsNButThis
        6
    TWorldIsNButThis  
       2023-04-10 19:01:31 +08:00 via iPhone
    flow ?
    java 9 加的那个
    然后用 spring webflux
    以前一直不知道这类技术有什么实际应用场景,近来才知道原来 chatgpt 在用这个
    zoharSoul
        7
    zoharSoul  
       2023-04-10 19:12:49 +08:00
    netty
    unco020511
        8
    unco020511  
       2023-04-10 19:13:50 +08:00
    K1W1
        9
    K1W1  
       2023-04-10 19:18:55 +08:00 via iPhone
    oldshensheep
        10
    oldshensheep  
       2023-04-10 19:25:40 +08:00   ❤️ 1
    cveoy
        11
    cveoy  
       2023-04-10 23:39:45 +08:00
    看看我接口就知道了
    https://ai1.chagpt.fun/
    jackwaycn
        12
    jackwaycn  
       2023-04-11 10:16:22 +08:00
    Spring SseEmitter
    WashFreshFresh
        13
    WashFreshFresh  
       2023-04-11 11:20:49 +08:00
    websocket 就好了,原来搞语音识别返回文字效果挺好的。
    jethroX
        15
    jethroX  
       2023-04-11 14:39:41 +08:00
    我是通过 http SSE 实现的,你可以搜一下你的 java 框架要怎么实现 sse 。
    mmdsun
        16
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2307 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.