响应流官网
底层
//注入StreamingChatModel
@Beanpublic StreamingChatModel streamingChatModel(){return OpenAiStreamingChatModel.builder().apiKey(System.getenv("DASHSCOPE_API_KEY")).modelName("qwen-plus").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build();}@Autowiredprivate StreamingChatModel streamingChatModel;//流式传输响应,实现StreamingChatResponseHandler接口
@GetMapping("/stream/chat1")public Flux<String> streamChat1(@RequestParam(value = "prompt",defaultValue = "杭州有什么好吃的") String prompt) {return Flux.create(emitter -> {streamingChatModel.chat(prompt, new StreamingChatResponseHandler() {@Overridepublic void onPartialResponse(String s) {emitter.next(s);}@Overridepublic void onCompleteResponse(ChatResponse chatResponse) {emitter.complete();}@Overridepublic void onError(Throwable throwable) {emitter.error(throwable);}});});}
高级Api
//第一步编写接口
public interface ChatAssistant {Flux<String> streamChat(String prompt);
}//第二步注入接口实现
@Beanpublic ChatAssistant highStreamAssistant(StreamingChatModel streamingChatModel){return AiServices.create(ChatAssistant.class, streamingChatModel);}@Autowiredprivate ChatAssistant chatAssistant;//第三部调用
@GetMapping("/stream/chat2")public Flux<String> streamChat2(@RequestParam(value = "prompt",defaultValue = "杭州有什么好吃的") String prompt) {return chatAssistant.streamChat(prompt);}