在与大语言模型交互时,响应的形式往往会影响用户体验的质量。
比如ChatGPT刚推出就给用户提供了一种更为流畅的交互体验,不仅生成时间短,如真人般的“吐字”答复效果,让许多人十分好奇,并且深感其独特之处。ChatGPT这种流式响应也引领了业内AI大模型智能对话的新潮流。
再比如最近大火的DeepSeek-R1,在经过深度思考后,缓缓得出结果,像真人般深思熟虑后提供给用户答案,这种吐字效果也让很多人觉得很灵动。
最近,在服务世界500强制造外企的企业级别私有化大模型实施项目中就用到了流式响应技术,客户向我们提出了需求:1、需要SSE流式响应,让AI的回答像真人对话一样逐字输出,营造沉浸式交互体验;2、不拆分API接口的前提下,实现个性化自定义API的参数。
今天,我们邀请迅易科技资深开发工程师Jocelyn,从技术的角度,结合实际应用案例分享,大语言模型交互响应中这种流畅且“娓娓道来”的吐字聊天效果是如何实现。
01 什么是SSE流式响应?
官方描述:
一种允许服务器向浏览器或其他客户端应用程序发送实时更新的技术。与传统的客户端请求服务器数据的方式不同,SSE 允许服务器主动推送数据到客户端,从而实现了从服务器到客户端的单向实时通信。
小编帮你翻译一下:
我们在与AI软件互动的过程中,有时会产生一种错觉,仿佛对面交流的是一位真正的人类伙伴。这种体验除了得益于它们能够理解上下文并作出更为人性化回应的能力之外,同时也离不开界面流式响应所带来的沉浸感。一点点渲染到界面,仿佛一位智者娓娓道来,引人入胜。
02 为什么选择Fetch-Sevent-Source来实现流式响应?
想要实现流式响应,文字逐字渲染就必须考虑让服务端与客户端建立长连接。那么,建立长连接一般有两种方式,分别是webSocket与SSE(Server-Sent Events)。下面,咱们用图表的方式对比二者。
虽然在应用场景上,在线聊天推荐使用webSockets,但是综合所有优缺点与实际情况,使用SSE的更多,如:OpenAI的ChatGPT等。
上图中,我们可以看到SSE只能够支持GET请求,那企业是私有化的模型,难免需要自定义参数,比如自定义头部(Headers),自定义(Request Body)请求体,即需具备一定的灵活性,SSE其实并不能完全适配。
因此,我们建议客户选择基于SSE进行封装的Fetch-Sevent-Source,可以使用POST请求,可以自定义头部,无需拆分成两个API接口。这样既能延用SSE轻量级长连接优势,又完美支持企业级私有化场景的动态参数传递+安全性要求。
03 流式响应实操步骤
1)安装依赖包
Npm install @microsoft/fetch-event-source
2)在需要使用的界面中引入
import { fetchEventSource }from'@microsoft/fetch-event-source';
3)具体使用案例
headers中可自定义参数,如:私有化大模型项目中涉及到身份校验与企业知识库的选择
body中易可自定义参数,此处结合业务场景,不再赘述;
Fetch-Sevent-Source里面封装了四个监听函数:分别是onopen,onmessage,onclose,onerror分别为连接成功会触发的处理函数、客户端返回信息触发的处理函数、关闭连接触发的处理函数、出现连接失败触发的处理函数。
完成以上的步骤,只要后端同学提供的API返回类型为eventStream即可模拟出流式响应的渲染效果啦。
04 总结
总而言之,探索SSE的奇妙世界,并将其集成到项目中,可以为用户创造更加动态和互动的体验。
目前,我们已经助力该世界500强制造外企的大模型应用在企业办公场景中的实践为企业人员提供了强大的工具和支持,极大地提高了工作效率和质量。
如果您也遇到了与该企业在AI大模型项目的困难,别慌!迅易科技基于多年的企业智能应用创新实践经验,为您和您的企业解决各种问题。如果您对AI智能应用方案感兴趣,欢迎前往迅易科技官网咨询。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。