Android开发者入门大模型API:第2周学习总结

2 阅读2分钟

Andorid + API实战

1. 工程搭建

  • 定义数据模型 ChatRequest, CharResponse, Message
  • 关键坑点 数据模型定义变量时,obejct是Kotlin关键字,需要使用@SerializedName("object")映射

2. 非流式API

  • 架构分层 Activity -> ViewModel -> Repository -> ApiService
  • 状态管理 LiveData 管理 message,loading,error
  • UI实现 RecyclerView + Adapter
  • 关键坑点 历史会话 history 不应该包含当前用户的输入消息,需要使用 dropLast(1) 排除

3. SEE原理

3.1 SSE定义

SSE(Server-Send Event) 是一种服务器主动向客户端推送数据技术

传统HTTP请求(非流式):
Client ──请求──> Server
Client <──完整响应── Server

SSE(流式):
Client ──请求──> Server
Client <──数据块1── Server
Client <──数据块2── Server
Client <──数据块3── Server
Client <──结束标记── Server

优势

  • 首字延迟
  • 体验更流畅
  • 可中途取消

3.2 SSE数据格式

基本格式

data: 这是第一行消息内容

data: 这是第二行消息内容
data: 可以跨多行

data: {"message": "JSON格式也可以"}

data: [DONE]

关键规则

  • 每个消息以 data: 开头
  • 容可以是纯文本或JSON
  • 息以两个换行符 \n\n 结束
  • data: [DONE] 表示传输结束

4. 流式API

  • 实现方式 OKHttp + 手动解析

  • 回调接口 自己定义流式回调接口:onNewContent、onComplete、onComplete

  • UI更新 收到临时消息,逐字追加更新


5. 历史管理

  • 原理 每次请求都携带历史对话
  • Token控制 设定最多保留对话轮数,超过了,则丢弃最远的历史对话

6. 语音输入

  • 方案选择 Vosk(离线、免费、隐私安全)

7. 整合

完整链路

  • 1.定义网络api接口,同时定义输入输出实体:ChatRequest,ChatResponse
  • 2.定义网络请求客户端 RetrofitClient
  • 3.定义仓库类 ChatRepository
  • 4.定义数据模型model:ChatMessage
  • 5.定义ViewModel:ChatViewModel

调用路径 Activity/Fragment -> ViewModel -> Repository -> ServiceAPI

监听回调 Activity/Fragment 通过ViewMode的LiveData监听结果


附件传上完整的demo代码

github.com/youlongsam/…

注意点

  • 在 ChatRepository 类中把 apikey 替换成自己在 DeepSeek 平台申请的key即可