当前位置: 首页 > news >正文

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

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下:
第一轮回答,此时没有会话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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • go-map系统学习
  • 【 html+css 绚丽Loading 】 000049 流云穿梭环
  • Imagination推出性能最高且具有高等级功能安全性的汽车GPU IP
  • VuePress搭建文档网站/个人博客(详细配置)主题配置-导航栏配置
  • Redhat 8,9系(复刻系列) 一键部署Oracle23ai rpm
  • 【高等数学学习记录】函数
  • 【裸机装机系列】4.kali(ubuntu)-配置个人用户的sudo权限并进行bashrc的其他配置
  • IDEA-调用Restful接口
  • cmake--target_link_libraries
  • Go语言现代web开发15 泛型和错误
  • 探索Python中的装饰器
  • C++ char*和char[] 可能指向的内存区域详解(附实验)
  • 安卓BLE蓝牙通讯
  • Ubuntu搭建FTP服务器
  • K8s1.28 部署Dashboard获取登录信息
  • 【RocksDB】TransactionDB源码分析
  • centos安装java运行环境jdk+tomcat
  • codis proxy处理流程
  • HTTP那些事
  • IP路由与转发
  • MD5加密原理解析及OC版原理实现
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • React Transition Group -- Transition 组件
  • 分享一份非常强势的Android面试题
  • 讲清楚之javascript作用域
  • 理解在java “”i=i++;”所发生的事情
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 通过几道题目学习二叉搜索树
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Prometheus VS InfluxDB
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #if等命令的学习
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (04)odoo视图操作
  • (1)STL算法之遍历容器
  • (26)4.7 字符函数和字符串函数
  • (C++20) consteval立即函数
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (编译到47%失败)to be deleted
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (转)人的集合论——移山之道
  • (状压dp)uva 10817 Headmaster's Headache
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • ./configure,make,make install的作用
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .htaccess配置重写url引擎