用SpringBoot进行通义千问接口调用同步方法和异步流式多轮回复方法

devtools/2024/9/21 8:31:55/

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下:
第一轮回答,此时没有会话id,需要雪花算法生成插入数据库
在这里插入图片描述

第二轮问题以及结果内容组合

在这里插入图片描述

1、同步版本环境准备以及代码

需要开通阿里大模型服务,如果没有开通服务,单独的去生成 key 是无效的。

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

生成你需要的 key

1、maven 准备

        <!--阿里巴巴大模型--><!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java --><dependency><groupId>com.alibaba</groupId><artifactId>dashscope-sdk-java</artifactId><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId></exclusion></exclusions><version>2.8.3</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.10.0</version></dependency>

2、application.yml 配置

redis一般默认有16个数据库,这里使用第三个。这个自定义。

#Redis
spring:data:redis:host: localhostport: 6379database: 3
zm:ali:api-key: "你的keyid"app-id: "你的appid"

3、实体类准备

主要是封装了一次,获取到 yml 的配置信息

@Configuration
@Data
public class AliKey {@Value("${zm.ali.api-key}")private String ApiKey;@Value("${zm.ali.host}")private String host;
}

redis工厂化工具类


/** @Author 落梨* @Date 2024-09-15 10:04* @Description: Redis模板生产工具**/
@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);template.setValueSerializer(serializer);template.setKeySerializer(new StringRedisSerializer());return template;}
}

4、controller 层

注意这里的回复类 使用的是官方提供,也就是 引入 maven 依赖,不是自己创建的

    /*** @author 落梨* @description 发送信息***/@PostMapping("/chat")public ResultResponse getChat(String conversationId,String prompt) throws NoApiKeyException, InputRequiredException {//这个generationResult是阿里的模型引入的回复类  不需要自己创建,引入即可GenerationResult generationResult =  conversationService.qianWenChat(conversationId,prompt);return ResultResponse.success(generationResult);}

5、service 层以及实现层

Flowable<ApplicationResult> qianWenChat(String conversationId, String prompt) throws NoApiKeyException, InputRequiredException;
    @Overridepublic Flowable<ApplicationResult> qianWenChat(String conversationId, String prompt) throws NoApiKeyException, InputRequiredException {//如果会话id是空,表示新建立一个会话id 调用雪花idif (conversationId.equals("")) {conversationId= String.valueOf(snowFlakeGenerateIdWorker.nextId());}try {return qianWenChatController.callWithMessage(conversationId,prompt);} catch (JsonProcessingException e) {throw new RuntimeException(e);}}
雪花工具类
package com.zm.naviTech.utils;import org.springframework.stereotype.Component;/** @Author 落梨* @Date 2024-09-14 11:07* @Description: 雪花算法 工具类**/
@Component
public  class SnowFlakeGenerateIdWorker {// 起始的时间戳private final static long START_TIMESTAMP = 1480166465631L;// 每一部分占用的位数,符号位不算在内private final static long SEQUENCE_BIT = 12; // 序列号占用的位数private final

http://www.ppmy.cn/devtools/114891.html

相关文章

代码随想录刷题day32丨动态规划理论基础,509. 斐波那契数, 70. 爬楼梯, 746. 使用最小花费爬楼梯

代码随想录刷题day32丨动态规划理论基础&#xff0c;509. 斐波那契数&#xff0c; 70. 爬楼梯&#xff0c; 746. 使用最小花费爬楼梯 1.动态规划理论基础 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题…

企业如何使用数据分析管理系统

在数字化时代&#xff0c;数据成为企业发展新的增长方向&#xff0c;如何利用数据分析管理系统高效管理和运用这些数据&#xff0c;已成为企业决策者们亟待解决的关键所在。数聚股份将通过多年的实践经验来深入探讨企业如何通过数据分析管理系统实现智能决策&#xff0c;增强竞…

[网络][知识]TCP-IP各协议的RFC编号和RFC原始文档的获取地址

TCP/IP协议族包括很多个子协议,下面是TCP/IP 协议和支持服务所支持的 RFC。 RFC768 用户数据报协议 (UDP) RFC783 简单文件传输协议 (TFTP) RFC791 Internet 协议 (IP) RFC792 Internet 控制消息协议 (ICMP) RFC793 传输控制协议 (TCP) RFC816 故障隔离和恢复 RFC…

Python Flask网页开发基本框架

注&#xff1a;Flask详细学习请见Flask学习合集。 直接上代码: app.py from flask import Flaskapp Flask(__name__)app.route("/") def hello():return "Hello, World!"if __name__ "__init__":app.run(host "127.0.0.1", port…

LDD学习2--Scull(TODO)

《Linux Device Drivers》&#xff08;LDD&#xff09;书籍中的 scull&#xff08;Simple Character Utility for Loading Localities&#xff09;是一个用于演示 Linux 字符设备驱动程序编写的示例代码。它为理解 Linux 内核模块和字符设备驱动程序的编写提供了基础实践平台&a…

SpringBoot 数据库表结构文档生成

官方地址&#xff1a;https://github.com/pingfangushi/screw screw 螺丝钉&#xff0c;支持以下数据库 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB&#xff08;2016&#xff09; 生产文档支持 html word markdown 开始 添加依赖 <!-- 螺丝钉 --><…

QTCreator 调试:unknown debugger type “No engine“

QTCreator 调试&#xff1a;unknown debugger type "No engine" - kaizenly - 博客园 (cnblogs.com) 一开始Debuggers---Auto-detected这里第一row第一个项是标红的&#xff0c;然后没改东西&#xff0c;点完应用Apply以后&#xff0c;就可以调试了...&#xff08;不…

VCNet论文阅读笔记

VCNet论文阅读笔记 0、基本信息 信息细节英文题目VCNet and Functional Targeted Regularization For Learning Causal Effects of Continuous Treatments翻译VCNet和功能目标正则化用于学习连续处理的因果效应单位芝加哥大学年份2021论文链接[2103.07861] VCNet和功能定向正…