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

用SpringBoot进行阿里云大模型接口调用同步方法和异步方法

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下:

结果内容组合

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 配置

zm:
   ali:
    api-key: "sk-bb0aef7568e645baafc7387630346178"
    host: "https://dashscope.aliyuncs.com/compatible-mode/v1"

3、实体类准备

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

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

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 层以及实现层

 GenerationResult qianWenChat(String conversationId, String prompt) throws NoApiKeyException, InputRequiredException;
    @Override
    public GenerationResult qianWenChat(String conversationId, String prompt) throws NoApiKeyException, InputRequiredException {
   
        //如果会话id是空,表示新建立一个会话id 调用雪花id
        if (conversationId.equals("")) {
   
            conversationId= String.valueOf(snowFlakeGenerateIdWorker.nextId());
        }
        return qianWenChatController.callWithMessage(conversationId,prompt);
    }
雪花工具类
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 static long MACHINE_BIT = 5; // 机器标识占用的位数
    private final static long DATACENTER_BIT = 5; // 数据中心占用的位数

    // 每一部分的最大值
    private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT);
    private final static long MAX_MACHINE_NUM = ~(-1L << MACHINE_BIT);
    private final 

http://www.kler.cn/a/304595.html

相关文章:

  • 844.比较含退格的字符串
  • JVM 中的完整 GC 流程
  • C++ 并发专题 - 自旋锁的实现(Spinlock)
  • MQTT协议解析 : 物联网领域的最佳选择
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • rockylinux 8安装 gcc11.2
  • C# 中的多线程同步:原子变量、原子操作、内存顺序和可见性
  • uni-app 聊天界面滚动到消息底部
  • Java后端程序员简单操作Linux系统命令
  • 深度学习——数据预处理,张量降维
  • Qt 边框border - qss样式
  • C++类与对象深度解析(一):从抽象到实践的全面入门指南
  • Linux相关:在阿里云下载centos系统镜像
  • Leetcode Hot 100刷题记录 -Day16(旋转图像)
  • 15.2 定义一个prometheus数据存储使用的pv
  • A Single Generic Prompt forSegmenting Camouflaged Objects
  • java: 程序包org.junit.jupiter.api不存在
  • 数据分析-前期数据处理
  • MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式,光标下方永远会出现的CapsLock箭头Icon的去除办法
  • Prompt提示词技巧
  • OA项目值用户登入首页展示
  • ArrayList、LinkedList和Vector的区别
  • Python 的分支结构
  • 如何选择适合企业的高效财税自动化软件
  • 桌面应用框架:tauri是后起之秀,赶上electron路还很长。
  • Mysql | 知识 | 理解是怎么加锁的