微信扫码
添加专属顾问
我要投稿
掌握Java后端开发的你不容错过,本文手把手教你如何使用SpringAI技术实现流式对话。 核心内容: 1. 引入SpringAI依赖,简化模型使用和管理 2. 配置API和SpringBoot工程,一键启动对话应用 3. 编写AI应用,实现基于DeepSeek模型的流式对话
<dependencyManagement> <dependencies> <!-- Spring AI的管理依赖 --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>${spring-ai.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>${spring-ai.version}</version></dependency>
<properties> <java.version>17</java.version> <spring-ai.version>1.0.0-M5</spring-ai.version></properties>
server: port: 8080spring: application: name: ai-demo ai: openai: base-url: https://api.deepseek.com api-key: 个人key chat: options: model: deepseek-chat temperature: 0.7
public class ChatConfig {
/**
* 默认形式
* @param model
* @return
*/
public ChatClient chatClient(OpenAiChatModel model) {
return ChatClient.builder(model).build();
}
}
public class ChatController {
private final ChatClient chatClient;
/**
* 聊天对话-阻塞式
* @param message
* @return
*/
public String chat( String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
/**
* 聊天对话-流式
*
* @param message
* @return
*/
"/stream",produces = "text/html;charset=utf-8") (value =
public Flux<String> chatStream(("message") String message) {
log.info("流式测试...");
return chatClient.prompt()
.user(message)
.stream()
.content();
}
/** * 添加提示词 已通过 * @param model * @return */ @Bean public ChatClient chatClient(OpenAiChatModel model) { return ChatClient .builder(model) .defaultSystem("你的名字是小明,身份为学生,请以学生的语气回答问题.") .build(); }
/**
* 会话日志
* @param model
* @return
*/
public ChatClient chatClient(OpenAiChatModel model, ChatMemory chatMemory) {
return ChatClient
.builder(model)
.defaultSystem("你的名字是小明,身份为学生,请以学生的语气回答问题.")
.defaultAdvisors(
new SimpleLoggerAdvisor(),
new MessageChatMemoryAdvisor(chatMemory)
)
.build();
}
/**
* 会话记忆 基于内存-缓存
* @return
*/
public ChatMemory chatMemory() {
return new InMemoryChatMemory();
}
/**
* 会话记忆 已通过
* @param message
* @param chatId
* @return
*/
"/memoryChat",produces = "text/html;charset=utf-8") (value =
public Flux<String> memoryChat(("message") String message, String chatId) {
log.info("流式测试...");
return chatClient.prompt()
.user(message)
.advisors(a-> a.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId))
.stream()
.content();
}
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-30
旅行规划太难做?5 分钟构建智能Agent,集成地图 MCP Server
2025-04-29
10万元跑满血版DeepSeek,这家公司掀了一体机市场的桌子|甲子光年
2025-04-29
谷歌大神首次揭秘Gemini预训练秘密:52页PPT干货,推理成本成最重要因素
2025-04-29
一文说清:什么是算法备案、大模型备案、大模型登记 2.0
2025-04-29
MCP:AI时代的“万能插座”,大厂竞逐的焦点
2025-04-29
打起来了!MCP VS A2A,谁才是Agent的未来事实标准?
2025-04-29
Google 的 A2A 与 MCP 该如何选择?还是两种都用?
2025-04-29
一站式AI应用开发平台 Firebase Studio
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-04-29
2025-04-29
2025-04-29
2025-04-28
2025-04-28
2025-04-28
2025-04-28
2025-04-28