微信扫码
添加专属顾问
我要投稿
掌握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: 8080
spring:
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
*/
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-26
MCP超市:百度上线AI开放计划
2025-04-26
从Function Call到MCP:大模型如何调用外部工具
2025-04-26
增量代码自动Review工具:洞窝在AI上的探索和实践
2025-04-25
OpenAI 白送 200 美元的深度研究功能?实测后发现这个「阉割版」不如不用
2025-04-25
为什么一定要做Agent智能体?
2025-04-25
哇!首个MCPBench来了,MCP竟然不比Function Calls更有优势? | 最新
2025-04-25
医疗大模型案例分析(一):Google Med-PaLM
2025-04-25
vLLM+Qwen-32B+Open Web UI构建本地私有大模型
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