android 简易实现一个ai流式问答——流式接收数据与使用JetPack Compose 流式显示内容

背景

实现一个AI聊天问答功能,其中AI的回复是分段返回的。为了给用户带来更好的交互体验,需要设计一个流式读取AI回复的接口,并在UI上实时显示这些分段内容。具体来说,我们需要实现以下功能:

  • 流式接口: 设计一个接口,能够持续从AI模型获取回复内容,并以段落为单位返回。

  • UI流式显示: 在UI界面上,随着新段落内容的获取,实时将这些内容追加到聊天窗口中,营造出AI在持续思考、逐步回答的氛围

流式传输网络设计

APP整体设计大致是

okhttp - retrofit - 自定义网络解析封装层(api) - repository - ViewModel - view

以下关于流式传输的设计,是基于自定义网络解析封装层来实现的

整体架构设计.drawio.png

OkHttp响应的流式读取

当我们使用OkHttp发送网络请求时,服务器返回的数据通常会以流的形式传输。为了高效地处理这些数据,我们可以采用流式读取的方式,即边接收数据边处理,而不是一次性将所有数据读入内存。

为什么不直接使用string()方法?

OkHttp提供的string()方法会将整个响应体一次性读入内存,然后转换为字符串。对于大数据量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值