Spring_Ai
Spring AI Alibaba 学习 学习 大模型调用、图片生成、语音合成、工具调用、云RAG、Agent 的实践 Spring Ai Alibaba Chat 简单的流式大模型问答接口 🏷️模型配置信息 1spring: 2 ai: 3 dashscope: 4 api-key: "API_KEY" # api key 5 chat: 6 options: 7 model: "qwen-plus" # 模型名称: qwen-plus, deepseek-r1 ⭐Api 接口代码 1@RestController 2@RequestMapping("/chat-memory") 3public class ChatMemoryController { 4 5 private final ChatClient chatClient; 6 7 public ChatMemoryController(ChatModel chatModel) { 8 this.chatClient = ChatClient.builder(chatModel) 9 .defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory())) 10 .defaultAdvisors() 11 .build(); 12 } 13 14 /** 15 * 使用 Spring AI 提供的基于内存的 Chat memory方法 16 */ 17 @GetMapping("/in-memory") 18 public Flux<String> chatWithMemory(@RequestParam("prompt") String prompt, 19 @RequestParam("chatId") String chatId, 20 HttpServletResponse response) { 21 response.setCharacterEncoding("UTF-8"); 22 23 return chatClient.prompt(prompt) 24 .advisors(advisorSpec -> advisorSpec 25 .param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId) // 上下文记忆ID,隔离不同的聊天上下文 26 .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100)) // 检索长度 27 .stream() 28 .content(); 29 } 30 31} 多模型切换示例 1@RestController 2@RequestMapping("/multi-model-chat-client") 3public class multiModelChatClientController { 4 5 private final Set<String> modelList = Set.of( 6 "deepseek-r1", 7 "deepseek-v3", 8 "qwen-plus", 9 "qwen-max" 10 ); 11 12 private final ChatClient chatClient; 13 14 public multiModelChatClientController(ChatModel chatModel) { 15 this.chatClient = ChatClient.builder(chatModel) 16 .defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory())) 17 .build(); 18 } 19 20 @GetMapping("/chat") 21 public Flux<String> stream( 22 @RequestParam("prompt") String prompt, 23 @RequestParam("chatId") String chatId, 24 @RequestParam(value = "modelName", required = false) String modelName, 25 HttpServletResponse response 26 ) { 27 response.setCharacterEncoding("UTF-8"); 28 29 if (!modelList.contains(modelName)) { 30 return Flux.just("model not exist!"); 31 } 32 33 return chatClient.prompt(prompt) 34 .options(ChatOptions.builder() // 这里构建聊天选项,指定不同的模型 35 .withModel(modelName) 36 .build()) 37 .advisors(advisorSpec -> advisorSpec // 这里构建顾问参数,指定不同的聊天id和上下文长度 38 .param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId) 39 .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100)) 40 .stream() 41 .content(); 42 } 43} Spring AI Alibaba Image Gen 调用文生图模型示例 ...