5bf92a9ded
Co-authored-by: multica-agent <github@multica.ai>
1.8 KiB
1.8 KiB
Work Log - AI问答流式响应(FL-184)
-
背景:
- AI 问答原接口等待 OpenAI-compatible
/chat/completions完整返回后再落库并返回 JSON,前端发送后只能等待整段回复。
- AI 问答原接口等待 OpenAI-compatible
-
本次处理:
/api/v1/ai-chat/conversations/{id}/messages改为application/x-ndjson流式响应,依次输出用户消息、回复增量和最终助手消息。- 保留
/api/v1/ai-chat/conversations/{id}/messages/sync同步接口,便于旧调用方或排障回退。 - 前端 AI 问答页面改为读取
ReadableStream,发送后立即追加用户消息和临时助手消息,并随增量实时刷新内容。 - 补充 AI 聊天流式服务单测,覆盖增量事件输出和最终消息落库。
-
验证:
- 基线:
npm --workspace web exec tsc --noEmit --pretty false通过。 - 基线:
python3 -m pytest api/tests/test_system_param_service.py因系统 Python 3.7 不满足项目 Python >=3.10 要求失败;后改用 uv 创建 Python 3.10 venv。 - 修改后:
python3 -m py_compile api/app/services/ai_chat_service.py api/app/api/v1/ai_chat.py api/tests/test_ai_chat_stream_service.py通过。 - 修改后:
npm --workspace web exec tsc --noEmit --pretty false通过。 - 修改后:
npm --workspace web exec eslint src/app/admin/ai-chat/page.tsx src/types/ai-chat.ts通过。 - 修改后:
PYTHONPATH=. api/.venv/bin/pytest api/tests/test_ai_chat_stream_service.py api/tests/test_system_param_service.py通过,3 passed;存在既有 SQLAlchemy relationship warning。
- 基线:
-
风险与关注点:
- 主消息发送接口响应格式由 JSON 改为 NDJSON 流;当前前端已同步适配,后端保留 sync 兼容接口。
- 流式工具调用会先聚合工具调用参数并执行,再继续流式输出工具后的最终回复。