Document async model streaming plan
This commit is contained in:
@@ -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 模型流式验证失败,保留同步流式入口,便于快速回退。
|
||||||
|
|||||||
Reference in New Issue
Block a user