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

使用Spring AI流式调用DeepSeek

1.新建MAVEN项目并引入依赖(MAVEN3.5+ JDK21+)

 1  <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-web</artifactId>
 5             <version>3.4.11</version>
 6         </dependency>
 7         <dependency>
 8             <groupId>org.mybatis.spring.boot</groupId>
 9             <artifactId>mybatis-spring-boot-starter</artifactId>
10             <version>3.0.5</version>
11         </dependency>
12         <dependency>
13             <groupId>com.mysql</groupId>
14             <artifactId>mysql-connector-j</artifactId>
15             <version>9.4.0</version>
16             <scope>runtime</scope>
17         </dependency>
18         <dependency>
19             <groupId>org.projectlombok</groupId>
20             <artifactId>lombok</artifactId>
21             <version>1.18.42</version>
22             <optional>true</optional>
23         </dependency>
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-test</artifactId>
27             <version>3.5.7</version>
28             <scope>test</scope>
29         </dependency>
30         <dependency>
31             <groupId>org.springframework.ai</groupId>
32             <artifactId>spring-ai-core</artifactId>
33             <version>1.0.0-M6</version>
34         </dependency>
35         <dependency>
36             <groupId>org.springframework.ai</groupId>
37             <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
38             <version>1.0.0-M6</version>
39         </dependency>
40     </dependencies>

2.application.yml配置文件,注意将api-key必须替换成你自己的真实key,数据库可暂时不替换成真实配置。

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/your_databaseusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driverai:openai:api-key: your_keybase-url: https://api.deepseek.comchat:options:model: deepseek-reasonertemperature: 0.7stream: true

3.代码

 1 import lombok.extern.slf4j.Slf4j;
 2 import org.springframework.ai.chat.client.ChatClient;
 3 import org.springframework.ai.chat.messages.AssistantMessage;
 4 import org.springframework.ai.chat.messages.Message;
 5 import org.springframework.ai.chat.messages.UserMessage;
 6 import org.springframework.ai.chat.prompt.Prompt;
 7 import org.springframework.http.MediaType;
 8 import org.springframework.web.bind.annotation.GetMapping;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.RestController;
12 import reactor.core.publisher.Flux;
13 
14 import java.util.ArrayList;
15 import java.util.Collections;
16 import java.util.List;
17 
18 @Slf4j
19 @RestController
20 @RequestMapping("/deepseek")
21 public class DeepSeekController {
22 
23     private final static List<Message> messageList = Collections.synchronizedList(new ArrayList<>());
24 
25     private final ChatClient chatClient;
26 
27     public DeepSeekController(ChatClient.Builder builder) {
28         this.chatClient = builder.build();
29     }
30 
31     @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
32     public Flux<String> chat(@RequestParam("prompt") String q) {
33         messageList.add(new UserMessage(q));
34         Prompt prompt = new Prompt(messageList);
35         StringBuilder result = new StringBuilder();
36         return chatClient.prompt(prompt).stream()
37                 .content()
38                 .doOnNext(content -> {
39                     log.info("content: {}", content);
40                     result.append(content);
41                 }).doOnComplete(() -> {
42                     log.info("result:" + System.lineSeparator() + " {}", result);
43                     messageList.add(new AssistantMessage(result.toString()));
44                 });
45     }
46 
47 }

 

http://www.jsqmd.com/news/26529/

相关文章:

  • 2025年天津自动化展公司权威推荐榜单:泵阀展/铸造与压铸展 /焊接与切割展源头公司精选
  • 不用ffmpeg如何将多个图片转换为视频
  • 2025年热门的泗水面粉机厂家最新用户好评榜
  • 读书笔记摘抄:恋爱
  • 2025 年除磷剂厂家最新推荐榜,技术实力与市场口碑深度解析,高效环保品牌选购指南铁盐除磷剂/液体除磷剂/固体除磷剂公司推荐
  • 为什么不要轻易使用SELECT *?
  • 大模型结构化输出json, 最新方法更方便
  • 2025 年醋酸钠厂家最新推荐榜,覆盖无水 / 三水 / 液体多类型,技术实力与市场口碑深度解析液体醋酸钠/碳源醋酸钠/结晶醋酸钠/工业醋酸钠公司推荐
  • 2025年比较好的智能触摸一体机厂家推荐及采购指南
  • 2025 年自动抛光机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析水龙头/门执手/锌合金/铝合金自动抛光机/打磨机器人抛光去毛刺公司推荐
  • 2025 年地膜厂家最新推荐榜,聚焦企业综合实力与市场口碑深度解析降解地膜/银色地膜/双色地膜/全生物降解地膜/银黑双面地膜公司推荐
  • 2025年知名的高压无功补偿柜最新TOP厂家排名
  • docker /overlay2/xxx/merged 爆满
  • 2025 年打磨机器人厂家最新推荐榜,技术实力与市场口碑深度解析,涵盖多领域适配方案摩托车配件打磨机器人/汽车配件打磨机器人公司推荐
  • 机器学习之Boosting算法
  • 2025年热门的高定衣柜灯厂家推荐及选择指南
  • 完整教程:C语言自学--自定义类型:联合和枚举
  • 微信小程序中的H5网页在关怀模式下页面排版变乱的解决办法
  • 2025年比较好的opp束带母卷热门厂家推荐榜单
  • 详细介绍:WSL 提速配置 checklist
  • 2025年11月GEO(AI搜索优化)品牌源头厂家推荐排行榜:AI驱动营销新纪元的领航者
  • 2025 年钢桶厂家最新推荐榜,技术实力与市场口碑深度解析,筛选优质品牌助力企业采购304 不锈/实验室不锈/镀锌/烤漆/PVF 内涂钢桶公司推荐
  • [JXCSP-S-S2019 江西] 多叉堆
  • 2025 年吨桶源头厂家最新推荐榜,技术实力与市场口碑深度解析,甄选优质生产企业叉车专用吨桶/热镀锌外框吨桶公司推荐
  • 2025年知名的来力台球桌厂家最新TOP实力排行
  • 2025年热门的大冰花钛杯最新TOP厂家排名
  • 2025 年磨床厂家最新推荐榜,涵盖数控内圆 / 复合 / 立式等类型,技术实力与市场口碑深度解析立式内圆/立式外圆/主轴/深孔内圆磨床公司推荐
  • 【金融行业案例】借助DHTMLX打造高效银行排班与管理系统
  • PHY6252低成本BLE5.2智能灯控智能家居蓝牙透传芯片模块 - 动能世纪
  • 2025 年青铜厂家最新推荐榜,技术实力与市场口碑深度解析,筛选优质供应商助力企业采购铍青铜/镉青铜/铬青铜/磷青铜/硅青铜/锡铅青铜公司推荐