Spring AI实战:10分钟接入OpenAI实现流式对话

发布时间:2026/7/2 8:03:11
Spring AI实战:10分钟接入OpenAI实现流式对话 一、环境准备dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-openai-spring-boot-starter/artifactId version1.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 FluxString 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 生态无缝集成流式输出、多轮对话、结构化输出开箱即用。