使用Spring AI流式调用DeepSeek

news/2025/10/30 14:29:58/文章来源:https://www.cnblogs.com/jaynessvip/p/19176936

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.mzph.cn/news/950774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年天津自动化展公司权威推荐榜单:泵阀展/铸造与压铸展 /焊接与切割展源头公司精选

在2025年3月的国家会展中心(天津),一台搭载先进传感技术的灵巧手正进行精准抓取演示,其多达42个自由度吸引了众多专业观众驻足,这一幕正是天津自动化展商实力的缩影。 作为中国北方工业领域的风向标,天津自动化展…

开源赋能智慧能源管理:解析MyEMS的技术优势与实践价值

在“双碳”目标引领与数字化转型浪潮的双重推动下,能源管理已从传统的“事后统计”升级为“事前预测、事中管控、事后优化”的全流程智慧化模式。在此背景下,开源能源管理系统凭借其灵活可定制、成本可控等优势,逐渐…

机器学习:逻辑回归 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

不用ffmpeg如何将多个图片转换为视频

前言 最近在做DicomView里面的一个将多序列导出为视频的功能时,第一时间想到的是使用ffmpeg。 看了一下Radiant的,整个软件才不到10MB。如果我使用ffmpeg,那整个软件将会相当大。 查了一下资料,发现Windows自带了一…

2025年热门的泗水面粉机厂家最新用户好评榜

2025年热门的泗水面粉机厂家最新用户好评榜泗水面粉机行业概述泗水县作为中国重要的面粉机械生产基地,拥有悠久的制造历史和深厚的技术积累。2025年,随着全球粮食加工需求的持续增长,泗水面粉机械行业迎来了新的发展…

读书笔记摘抄:恋爱

0 我们是否具有吸引力,取决于我们对自身的投资程度,这就是不依赖性。我们通过脆弱来建立不依赖性,通过诚实来练习脆弱性。

2025 年除磷剂厂家最新推荐榜,技术实力与市场口碑深度解析,高效环保品牌选购指南铁盐除磷剂/液体除磷剂/固体除磷剂公司推荐

引言 随着《城镇污水处理厂污染物排放标准》(GB 18918-2002)要求日趋严格,除磷剂作为污水处理核心材料,其性能直接决定排放合规性。当前市场产品除磷率差异达 30%-50%,二次污染隐患时有发生,企业选型困境突出。本…

为什么不要轻易使用SELECT *?

有时候人只需要一只温暖的手的触摸,就像是拥有了整个世界。我一直在等,等到绝望🌱 起因:我写的第一个学生管理系统 最近在学习 C# WinForms,做了一个简单的“学生信息管理系统”,功能就是增删改查。数据库用的是…

大模型结构化输出json, 最新方法更方便

大模型结构化输出json, 最新方法更方便from langchain_openai import ChatOpenAI from pydantic import BaseModel, Field # 替换后 from typing import List, Optional class ChunkMetadata(BaseModel):summary: str …

2025 年醋酸钠厂家最新推荐榜,覆盖无水 / 三水 / 液体多类型,技术实力与市场口碑深度解析液体醋酸钠/碳源醋酸钠/结晶醋酸钠/工业醋酸钠公司推荐

引言 在环保政策收紧推动下,醋酸钠作为污水处理核心碳源,2024 年市场规模已突破 32 亿元,年增速达 18.7%,但产品纯度差异达 20% 以上,选品难度显著增加。本次推荐榜依托环境保护产业协会 2025 年《水处理药剂质量…

2025年比较好的智能触摸一体机厂家推荐及采购指南

2025年比较好的智能触摸一体机厂家推荐及采购指南随着数字化转型浪潮席卷全球,智能触摸一体机已成为各行各业提升效率、优化服务的重要工具。2025年,智能触摸一体机市场将迎来更广阔的应用场景和更激烈的竞争环境。本…

2025 年自动抛光机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析水龙头/门执手/锌合金/铝合金自动抛光机/打磨机器人抛光去毛刺公司推荐

引言 在金属、玻璃、塑胶件加工行业高速发展的当下,自动抛光机作为提升产品表面质量的关键设备,其性能与可靠性备受企业关注。为精准筛选优质设备品牌,机械工业联合会联合五金制品协会开展 2025 年度自动抛光机行业…

2025 年地膜厂家最新推荐榜,聚焦企业综合实力与市场口碑深度解析降解地膜/银色地膜/双色地膜/全生物降解地膜/银黑双面地膜公司推荐

引言 为破解地膜市场品质参差、选品困难等问题,本次推荐榜依托塑料加工工业协会农用薄膜专业委员会 2025 年度测评数据编制,测评覆盖全国 127 家源头厂家。测评采用 “四维评分体系”:原料品质(30%)重点核查降解率…

2025年知名的高压无功补偿柜最新TOP厂家排名

2025年知名的高压无功补偿柜最新TOP厂家排名高压无功补偿柜行业概述高压无功补偿柜是现代电力系统中不可或缺的关键设备,它能有效提高功率因数、降低线路损耗、改善电压质量并提升电网稳定性。随着"双碳"目…

docker /overlay2/xxx/merged 爆满

清理 docker ps -aq | xargs -I {} sh -c echo "" > $(docker inspect -f "{{.LogPath}}" {})

2025 年打磨机器人厂家最新推荐榜,技术实力与市场口碑深度解析,涵盖多领域适配方案摩托车配件打磨机器人/汽车配件打磨机器人公司推荐

引言 为精准筛选打磨机器人优质品牌,本次推荐榜联合机械工业自动化协会、全国工业机器人标准化技术委员会开展测评,参考《工业机器人性能评估规范》(GB/T 30244-2024),从技术实力、生产适配性、服务保障三大维度构…

机器学习之Boosting算法

Boosting(提升)是一种强大的集成学习(Ensemble Learning)方法,其核心思想是按顺序训练一系列的“弱学习器”(Weak Learners,通常是简单的模型,如浅层决策树),每一个弱学习器都会在前一个弱学习器的基础上进行…

2025年热门的高定衣柜灯厂家推荐及选择指南

2025年热门的高定衣柜灯厂家推荐及选择指南 随着家居智能化与个性化需求的提升,高定衣柜灯已成为现代家居设计中不可或缺的元素。它不仅提供功能性照明,更能通过光影艺术提升空间质感。2025年,市场涌现出众多专注于…

完整教程:C语言自学--自定义类型:联合和枚举

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

微信小程序中的H5网页在关怀模式下页面排版变乱的解决办法

微信小程序中的H5网页在关怀模式下页面排版变乱的解决办法在开发当中呢,经常会有很多H5的小活动页面,需要在微信的环境下使用。偶尔会出现H5页面在微信或者其他客户端中出现字体变大的问题,下面提供解决方法 首先先…