JAVA连接FastGPT实现流式请求SSE效果

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!

一、先看效果

真正实流式请求,SSE效果,SSE解释:SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,也被称为“事件流”(Event Stream)。它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接实现服务器向客户端的实时数据推送。

二环境搭建:

在使用JAVA连接FastGPT之前,需要有FastGPT环境,FastGPT环境搭建可以参考如下文章:

FastGTP环境搭建,可直接使用在项目上

二、JAVA连接FastGPT关键代码

Flux<String> response = webClient.post()
                .uri("/chat/completions")//请求uri
                .header("Authorization", "Bearer fastgpt-bfjg4AUxE2ocCUXXeT91proKcnc0t86y9mmPBraOp8waDnPZpQMrw")//设置成自己的key,获得key的方式可以在下文查看
                .header(HttpHeaders.ACCEPT, MediaType.TEXT_EVENT_STREAM_VALUE)//设置流式响应
                .contentType(MediaType.APPLICATION_JSON)
                .body(BodyInserters.fromValue(paramJson))
                .retrieve()
                .bodyToFlux(String.class)
                .flatMap(res->{
                    if (StrUtil.equals("[DONE]",res)){//[DONE]是消息结束标识
                        return Flux.empty();
                    }
                    ObjectMapper objectMapper = new ObjectMapper();
                    try {
                        //System.out.println(res);
                        JsonNode jsonNode = objectMapper.readTree(res);
                        Answer aiAnswer = objectMapper.treeToValue(jsonNode, Answer.class);
                        List<Choices> choicesList = aiAnswer.getChoices();
                        Choices choices = choicesList.get(0);
                        Delta delta = choices.getDelta();
                        String json = objectMapper.writeValueAsString(delta);
                        System.out.println(json);
                        return Flux.just(json);
                    } catch (JsonProcessingException e) {
                        e.printStackTrace();
                    }

                    return Flux.empty();
                });

四、测试

服务启运之后,访问:http://localhost:8080/ck/chat?message=马云是谁

五:源代码下载

下载地址:链接:https://pan.baidu.com/s/1o9TPXNliZMYIqZHxGFK1FQ?pwd=2chg 
提取码:2chg

上一篇:在linux系统centos上面安装php7gmp扩展


下一篇:240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类