1、流式输出
配置文件
llm.config.aliQwenApiKey=sk-...........
llm.config.aliQwenModelName=qwen-plus
llm.config.aliQwenUrl=https://dashscope.aliyuncs.com/compatible-mode/v1
# 设置响应的字符编码,避免流式返回输出乱码
server.servlet.encoding.charset=utf-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
controller 测试1
@Resource //直接使用 low-level LLM API
private StreamingChatModel streamingChatLanguageModel;
// http://localhost:9007/chatstream/chat?prompt=济南有什么好吃的
@GetMapping(value = "/chatstream/chat")
public Flux<String> 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、自定义 ChatAssistant
import reactor.core.publisher.Flux;
/**
* @auther xulk
* @Date 2026-06-30 16:19
* @Description: TODO
*/
public interface ChatAssistant {
String chat(String prompt);
Flux<String> chatFlux(String prompt);
}
controller 测试3
@Resource //自己封装接口使用 high-level LLM API
private ChatAssistant chatAssistant;
// http://localhost:9007/chatstream/chat3?prompt=济南有什么好吃的
@GetMapping(value = "/chatstream/chat3")
public Flux<String> chat3(@RequestParam(value = "prompt", defaultValue = "南京有什么好吃") String prompt) {
System.out.println("---come in chat3");
return chatAssistant.chatFlux(prompt);
}



