前言
Spring AI 是 Spring 官方推出的 AI 集成框架,让 Java 开发者能用熟悉的 Spring 风格快速接入各大 AI 模型。本文带你 10 分钟完成 OpenAI 接入,并实现流式对话效果。
一、环境准备
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
二、配置 API Key
# application.yml
spring:
ai:
openai:
api-key: your-api-key-here
chat:
options:
model: gpt-4o-mini
temperature: 0.7
三、普通对话
@RestController
@RequestMapping("/ai")
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder
.defaultSystem("你是一个专业的Java技术顾问,回答简洁专业。")
.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
四、流式对话(打字机效果)
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> stream(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.stream()
.content();
}
// 前端接收流式响应
const eventSource = new EventSource("/ai/stream?message=介绍Spring AI");
eventSource.onmessage = (event) => {
document.getElementById("output").innerHTML += event.data;
};
eventSource.onerror = () => eventSource.close();
五、多轮对话(带记忆)
@RestController
public class MemoryChatController {
private final ChatClient chatClient;
public MemoryChatController(ChatClient.Builder builder, ChatMemory chatMemory) {
this.chatClient = builder
.defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory))
.build();
}
@GetMapping("/memory-chat")
public String memoryChat(
@RequestParam String message,
@RequestParam(defaultValue = "default") String sessionId) {
return chatClient.prompt()
.user(message)
.advisors(a -> a.param(CHAT_MEMORY_CONVERSATION_ID_KEY, sessionId))
.call()
.content();
}
}
六、结构化输出
record MovieRecommendation(String title, String director, int year, String reason) {}
@GetMapping("/recommend")
public MovieRecommendation recommend(@RequestParam String genre) {
return chatClient.prompt()
.user("推荐一部" + genre + "类型的电影,用JSON格式返回")
.call()
.entity(MovieRecommendation.class);
}
总结
Spring AI 让 Java 开发者以最小的学习成本接入 AI 能力。核心优势:统一抽象(一套 API 支持 OpenAI、Azure、Ollama 等多个模型);Spring 生态无缝集成;流式输出、多轮对话、结构化输出开箱即用。
觉得有帮助请点赞收藏!有问题欢迎评论区交流 🚀
---
📌 **如果觉得文章对你有帮助,欢迎点赞👍收藏⭐!**
💬 有问题或建议?欢迎在评论区留言讨论~
🔗 更多技术干货请关注作者:弥烟袅绕
📚 本文地址:https://www.cnblogs.com/czlws/p/19801096/spring-ai-openai-java-streaming-chat
来源:https://www.cnblogs.com/czlws/p/19801096/spring-ai-openai-java-streaming-chat |