AI对话应用设计
AI 对话应用是最常见的大模型应用形态。它看起来只是一个聊天框,实际涉及模型调用、上下文管理、流式输出、用户状态、安全控制和质量评估。
# 1. 基本架构
用户界面
-> 会话服务
-> Prompt 编排
-> 上下文管理
-> 模型调用
-> 流式返回
-> 消息存储
-> 反馈与评估
# 2. 会话模型
Conversation
├─ conversation_id
├─ user_id
├─ title
├─ created_at
└─ messages
├─ role: user / assistant / system / tool
├─ content
├─ model
├─ token_usage
└─ created_at
消息要区分角色,否则模型很难正确理解上下文。
# 3. 上下文管理
长对话不能无限追加历史消息。
常见策略:
- 保留最近 N 轮对话。
- 对早期对话做摘要。
- 只召回和当前问题相关的历史。
- 清理无关工具结果。
- 为输出预留 Token 空间。
# 4. 流式输出
大模型生成可能较慢,流式输出能提升用户体验。
用户提交
-> 服务端请求模型
-> 模型逐步生成 Token
-> 服务端通过 SSE/WebSocket 推送
-> 前端实时渲染
同时要支持停止生成、失败重试和异常提示。
# 5. 常见功能
| 功能 | 说明 |
|---|---|
| 新建会话 | 开启独立上下文 |
| 历史会话 | 查询和恢复聊天记录 |
| 停止生成 | 用户主动终止模型输出 |
| 重新生成 | 基于同一上下文再次请求 |
| 消息反馈 | 点赞、点踩、问题上报 |
| 文件上传 | 结合文档解析或 RAG |
| 工具调用 | 让对话接入业务能力 |
# 6. 安全与治理
- 用户输入要做长度和内容限制。
- 敏感信息进入模型前要脱敏。
- 历史会话要按用户隔离。
- 工具调用必须做权限校验。
- 高风险问题要拒答或转人工。
- 记录模型、Token、耗时和错误信息。
# 7. Tips 快问快答
Q:历史消息全部传给模型可以吗?
A:不建议。成本高、延迟高,还会引入噪声。应做裁剪、摘要或相关性召回。
Q:对话标题可以自动生成吗?
A:可以用模型基于首轮问题生成短标题,但要控制长度并允许用户修改。
Q:为什么需要用户反馈?
A:反馈可以帮助发现失败样本,优化 Prompt、模型、检索和安全策略。
上次更新: 2026/06/25, 17:53:09