Spring Ai--快速入门4:流式对话 原文网址Spring Ai--快速入门4流式对话-CSDN博客简介本文介绍Spring Ai流式对话的实战以这三种方式进行实战流式返回字符串结果、流式返回全量SSE数据、流式返回手动调用接口的结果。备注之前文章介绍过Spring Ai对话的实战Spring Ai--快速入门1对话实战-CSDN博客流式会话的原理是什么流式会话的核心服务端持续地向客户端发送数据。实现方案有两种WebSocket、SSE。WebSocket大部分人都知道它是长连接全双工客户端可以持续向服务端发送数据服务端也可以持续地向客户端发送数据。SSE全称是Server-Sent Events中文含义服务器发送事件。服务端可以持续地向客户端发送数据但客户端是一次性的发送请求给服务器。两者详细的对比可以看这里WebSocket与SSE的对比-CSDN博客对比后可以发现SSE更适合用于AI流式数据返回。Spring Ai底层就是基于SSE。测试用apifox进行测试。1. 流式返回字符串结果可以发现FluxString这种写法直接返回了回答的内容没有额外的数据。适合只需要结果的业务场景。2. 流式返回全量SSE数据可以发现FluxServerSentEventChatResponse这种写法会返回全量SSE数据里边会包含AI的回答。而且第一个响应和最后一个响应真实数据的字段text是空的。适合需要全量SSE数据的业务场景。实际上可以对结果进行定制比如只取ChatResponse里的某个值只需改写返回值泛型以及这个地方.map(chatResponse - { return ServerSentEvent .builder(chatResponse) .event(message) .build(); });第一个响应中间的响应最后一个响应这里贴出完整的单条响应{ result: { output: { messageType: ASSISTANT, metadata: { role: ASSISTANT, messageType: ASSISTANT, finishReason: , refusal: , index: 0, annotations: [], id: chatcmpl-e20dbdd1-4e7d-9f48-9ea3-eecdf987d3c9, reasoningContent: }, toolCalls: [], media: [], text: 我可以 }, metadata: { finishReason: , contentFilters: [], empty: true } }, results: [ { output: { messageType: ASSISTANT, metadata: { role: ASSISTANT, messageType: ASSISTANT, finishReason: , refusal: , index: 0, annotations: [], id: chatcmpl-e20dbdd1-4e7d-9f48-9ea3-eecdf987d3c9, reasoningContent: }, toolCalls: [], media: [], text: 我可以 }, metadata: { finishReason: , contentFilters: [], empty: true } } ], metadata: { id: chatcmpl-e20dbdd1-4e7d-9f48-9ea3-eecdf987d3c9, model: qwen-plus, rateLimit: { tokensLimit: 0, requestsReset: PT0S, tokensRemaining: 0, tokensReset: PT0S, requestsLimit: 0, requestsRemaining: 0 }, usage: { promptTokens: 0, nativeUsage: {}, completionTokens: 0, totalTokens: 0 }, promptMetadata: [], empty: false } }3. 流式返回手动调用接口数据可以发现FluxServerSentEventString这种写法会返回SSE部分数据里边会包含AI的回答。而且第一个响应和倒数第二个响应真实数据的字段content是空的最后一个响应是个统计性的数据连content字段都没有里边有一些token使用量等使用数据。适合需要高度定制的业务场景。因为此法是直接使用WebFlux进行的接口调用自由度最大。第一次响应最后两个响应这里贴出详细数据第一个响应{ choices: [ { delta: { content: , role: assistant }, index: 0, logprobs: null, finish_reason: null } ], object: chat.completion.chunk, usage: null, created: 1768920120, system_fingerprint: null, model: qwen-plus, id: chatcmpl-174ca428-8fa3-9129-8567-69ccc39199d9 }中间的响应{ choices: [ { finish_reason: null, logprobs: null, delta: { content: 你好 }, index: 0 } ], object: chat.completion.chunk, usage: null, created: 1768920120, system_fingerprint: null, model: qwen-plus, id: chatcmpl-174ca428-8fa3-9129-8567-69ccc39199d9 }倒数第二个响应{ choices: [ { finish_reason: stop, delta: { content: }, index: 0, logprobs: null } ], object: chat.completion.chunk, usage: null, created: 1768920120, system_fingerprint: null, model: qwen-plus, id: chatcmpl-174ca428-8fa3-9129-8567-69ccc39199d9 }最后一个响应{ choices: [], object: chat.completion.chunk, usage: { prompt_tokens: 11, completion_tokens: 278, total_tokens: 289, prompt_tokens_details: { cached_tokens: 0 } }, created: 1768920120, system_fingerprint: null, model: qwen-plus, id: chatcmpl-174ca428-8fa3-9129-8567-69ccc39199d9 }代码为便于维护全文已转移到此网址Spring Ai-快速入门4流式对话 - 自学精灵

相关新闻

最新新闻

三步搞定智慧教育平台教材下载:智能解析工具让课本获取更简单

三步搞定智慧教育平台教材下载:智能解析工具让课本获取更简单

三步搞定智慧教育平台教材下载:智能解析工具让课本获取更简单 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项…

2026/8/8 13:59:15
魔兽争霸3兼容性修复指南:5个简单步骤让经典游戏在Windows 11完美运行

魔兽争霸3兼容性修复指南:5个简单步骤让经典游戏在Windows 11完美运行

魔兽争霸3兼容性修复指南:5个简单步骤让经典游戏在Windows 11完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在W…

2026/8/8 13:59:15
DSGE模型库终极指南:重新定义宏观经济研究的全新方式

DSGE模型库终极指南:重新定义宏观经济研究的全新方式

DSGE模型库终极指南:重新定义宏观经济研究的全新方式 【免费下载链接】DSGE_mod A collection of Dynare models 项目地址: https://gitcode.com/gh_mirrors/ds/DSGE_mod 你是否曾为宏观经济研究的复杂性而苦恼?想要快速上手DSGE模型却不知从何开…

2026/8/8 13:59:15
终极防撤回指南:让微信QQ消息永远无法消失的秘密武器

终极防撤回指南:让微信QQ消息永远无法消失的秘密武器

终极防撤回指南:让微信QQ消息永远无法消失的秘密武器 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com…

2026/8/8 13:59:15
FPGA开发中Xilinx IP文件只读属性修改的完整解决方案

FPGA开发中Xilinx IP文件只读属性修改的完整解决方案

1. 项目概述:为什么我们需要修改Xilinx IP文件的只读属性? 在FPGA开发,尤其是使用Xilinx(现AMD)Vivado或ISE工具链时,我们经常会遇到一个看似微小却极其恼火的问题:从IP Catalog生成或从别人那里…

2026/8/8 13:59:15
终极免费方案:如何一键解锁123云盘VIP功能与下载限制

终极免费方案:如何一键解锁123云盘VIP功能与下载限制

终极免费方案:如何一键解锁123云盘VIP功能与下载限制 【免费下载链接】123pan_unlock 基于油猴的123云盘解锁脚本,支持解锁123云盘下载功能 项目地址: https://gitcode.com/gh_mirrors/12/123pan_unlock 还在为123云盘的下载限制和广告困扰吗&…

2026/8/8 13:54:15