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 生态无缝集成;流式输出、多轮对话、结构化输出开箱即用。
更多推荐




所有评论(0)