Spring AI流式输出:让回答像ChatGPT一样逐字返回
·
本文是“Spring AI 智能体实战”系列第 6/30 篇。项目采用 Java 17、Spring Boot 3.4.3 和课程示例所使用的 Spring AI 版本。不同 Spring AI 版本的依赖名称和部分 API 可能存在差异,请以自己项目的版本为准。
前言
把同步对话改造成 Flux 流式响应,改善长回答场景下的等待体验。
本文将沿用同一个实战项目逐步完成相关功能。所有密钥均使用环境变量表示,复制代码后请在本地配置真实值,不要把 API Key 或数据库密码提交到代码仓库。
本文目标
-
理解本节功能解决的实际问题。
-
掌握关键配置、接口与代码结构。
-
完成可验证的运行结果,为下一节功能做好准备。
流式调用
同步调用需要等待很长时间页面才能看到结果,用户体验不好。为了解决这个问题,我们可以改进调用方式为流式调用。
在SpringAI中使用了WebFlux技术实现流式调用。
修改刚才ChatController中的chat方法:
// 注意看返回值,是Flux<String>,也就是流式结果,另外需要设定响应类型和编码,不然前端会乱码
@RequestMapping(value = "/chat", produces = "text/html;charset=UTF-8")
public Flux<String> chat(@RequestParam(defaultValue = "讲个笑话") String prompt) {
return chatClient
.prompt(prompt)
.stream() // 流式调用
.content();
}
重启测试,再次访问:

本文总结
使用 stream 方法返回流式内容,并通过响应类型与 UTF-8 编码避免前端乱码。
建议在进入下一篇之前亲自运行本文代码,并记录请求参数、控制台日志和最终响应。遇到问题时,优先检查依赖版本、模型名称、环境变量和包名是否一致。
下一篇预告
下一篇:System Prompt实战:给Spring AI设定身份与行为。
更多推荐



所有评论(0)