Document async model streaming plan

This commit is contained in:
2026-07-08 17:16:38 +08:00
parent 211cb6207e
commit 1aab53cb37

View File

@@ -225,3 +225,25 @@
1. 飞书 token、wiki node、children、docx/file 文本缓存需要与阶段 4 Redis 缓存一起设计。 1. 飞书 token、wiki node、children、docx/file 文本缓存需要与阶段 4 Redis 缓存一起设计。
2. async DB session 是否引入,需要结合 SQLAlchemy 连接池和迁移成本单独评估。 2. async DB session 是否引入,需要结合 SQLAlchemy 连接池和迁移成本单独评估。
3. 如果短期不引入 async DB session飞书/RAG 可以先使用独立的异步外部请求层DB 读写仍保持同步但缩短持有时间。 3. 如果短期不引入 async DB session飞书/RAG 可以先使用独立的异步外部请求层DB 读写仍保持同步但缩短持有时间。
## 阶段 3A 实施计划
目标:把模型真实流式阶段中的上游长连接调用改成异步 `httpx.AsyncClient.stream`,减少模型生成期间对同步 worker 线程的占用。
实施范围:
1. `/chat/completions` 改为 async SSE 生成器。
2. `ChatStreamService` 增加 async 流式入口,保留原同步入口作为兼容和回退。
3. `ModelStreamService` 增加 async 流式入口:
- OpenAI 兼容协议使用 `AsyncClient.stream`
- Anthropic Messages 协议使用 `AsyncClient.stream`
- mock、未命中知识库、关闭流式、MiniMax/Gemini 等仍走安全降级输出。
4. SSE 事件格式保持不变,用户端无需改动。
5. 队列兜底先保持当前进程内逻辑不变Redis 全局队列仍放到阶段 4。
风险控制:
1. 不修改飞书检索、RAG 排序、段落截取和知识库召回逻辑。
2. 不修改数据库 schema。
3. 不把当前工作区已有的 5 个后端未提交文件混入阶段 3A 提交。
4. 如果 async 模型流式验证失败,保留同步流式入口,便于快速回退。