ai开发-langchain4j-进阶-03-流式输出
1、流式输出配置文件llm.config.aliQwenApiKeysk-........... llm.config.aliQwenModelNameqwen-plus llm.config.aliQwenUrlhttps://dashscope.aliyuncs.com/compatible-mode/v1 # 设置响应的字符编码避免流式返回输出乱码 server.servlet.encoding.charsetutf-8 server.servlet.encoding.enabledtrue server.servlet.encoding.forcetruecontroller 测试1Resource //直接使用 low-level LLM API private StreamingChatModel streamingChatLanguageModel; // http://localhost:9007/chatstream/chat?prompt济南有什么好吃的 GetMapping(value /chatstream/chat) public FluxString chat(RequestParam(prompt) String prompt) { System.out.println(---come in chat); return Flux.create(emitter - { streamingChatLanguageModel.chat(prompt, new StreamingChatResponseHandler() { Override public void onPartialResponse(String partialResponse) { emitter.next(partialResponse); } Override public void onCompleteResponse(ChatResponse completeResponse) { emitter.complete(); } Override public void onError(Throwable throwable) { emitter.error(throwable); } }); }); }controller 测试2// http://localhost:9007/chatstream/chat2?prompt济南有什么好吃的 GetMapping(value /chatstream/chat2) public void chat2(RequestParam(value prompt, defaultValue 北京有什么好吃) String prompt) { System.out.println(---come in chat2); streamingChatLanguageModel.chat(prompt, new StreamingChatResponseHandler() { Override public void onPartialResponse(String partialResponse) { System.out.println(partialResponse); } Override public void onCompleteResponse(ChatResponse completeResponse) { System.out.println(---response over: completeResponse); } Override public void onError(Throwable throwable) { throwable.printStackTrace(); } }); }2、自定义 ChatAssistantimport reactor.core.publisher.Flux; /** * auther xulk * Date 2026-06-30 16:19 * Description: TODO */ public interface ChatAssistant { String chat(String prompt); FluxString chatFlux(String prompt); }controller 测试3Resource //自己封装接口使用 high-level LLM API private ChatAssistant chatAssistant; // http://localhost:9007/chatstream/chat3?prompt济南有什么好吃的 GetMapping(value /chatstream/chat3) public FluxString chat3(RequestParam(value prompt, defaultValue 南京有什么好吃) String prompt) { System.out.println(---come in chat3); return chatAssistant.chatFlux(prompt); }