原文链接
https://nvuai.cc/docs/api-reference/tenant-api/conversation-api.md对话交互API
本文引用的源码与文档
本文引用的文件
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/api/tenant/conversations.py
- backend/app/api/tenant/ws.py
- backend/app/api/admin/ws.py
- backend/app/ai/sse.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/services/ai/conversation_facade_mixins.py
- backend/app/ai/runtime/query_engine.py
- backend/app/schemas/ai/agent_chat.py
- backend/app/models/ai/conversation.py
- backend/app/repositories/ai/conversation_message_repository.py
- backend/app/services/ai/conversation_service.py
- backend/app/sio/socketio_server.py
- backend/app/sio/user_ns.py
- backend/app/sio/tenant_ns.py
- backend/app/sio/admin_ns.py
- backend/app/core/sse.py
- backend/app/core/socketio_server.py
- backend/app/core/base_controller.py
- backend/app/core/deps.py
- backend/app/middleware/trace.py
- backend/app/enums/memory.py
- backend/app/ai/memory_policy.py
- backend/app/cache.py
- backend/app/repositories/ai/conversation_repository.py
- backend/app/schemas/ai/conversation.py
- backend/app/schemas/ai/conversation_message.py
目录
简介
本文件面向“对话交互API”的技术与业务实现,覆盖智能体聊天、对话历史、消息管理等实时交互接口,重点说明:
- 实时交互方式:WebSocket、SSE(Server-Sent Events)与流式响应
- 消息投递与状态同步:消息持久化、增量更新、完成事件
- 对话上下文管理:上下文长度控制、内存策略、历史查询
- 历史导出与下载:Markdown/JSON格式、分页批量加载
- 错误处理与重试:网关异常、并发会话限制、重试策略
- 数据持久化、压缩与检索优化:模型层、仓库层、缓存与索引
项目结构
对话交互API主要由以下层次构成:
- 控制器层:租户与用户维度的聊天与对话控制器
- 服务层:对话服务、导出运行时服务、统计与持久化服务
- 引擎层:协议运行与重试救援逻辑
- 传输层:SSE封装、Socket.IO命名空间与服务器
- 模型与仓库:对话与消息的数据模型及仓储
- 中间件与依赖:鉴权、追踪、租户隔离等
图表来源
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/api/tenant/conversations.py
- backend/app/api/tenant/ws.py
- backend/app/api/admin/ws.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/sse.py
- backend/app/core/socketio_server.py
- backend/app/sio/user_ns.py
- backend/app/sio/tenant_ns.py
- backend/app/sio/admin_ns.py
- backend/app/models/ai/conversation.py
- backend/app/repositories/ai/conversation_repository.py
- backend/app/repositories/ai/conversation_message_repository.py
- backend/app/schemas/ai/conversation.py
- backend/app/schemas/ai/conversation_message.py
章节来源
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/api/tenant/conversations.py
- backend/app/api/tenant/ws.py
- backend/app/api/admin/ws.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/sse.py
- backend/app/core/socketio_server.py
- backend/app/sio/user_ns.py
- backend/app/sio/tenant_ns.py
- backend/app/sio/admin_ns.py
- backend/app/models/ai/conversation.py
- backend/app/repositories/ai/conversation_repository.py
- backend/app/repositories/ai/conversation_message_repository.py
- backend/app/schemas/ai/conversation.py
- backend/app/schemas/ai/conversation_message.py
核心组件
- 聊天控制器(租户/用户):负责接收聊天请求、构建命令、调用引擎并返回SSE或Socket.IO流式响应
- 对话服务:统一管理对话生命周期、消息持久化、统计与导出
- 导出运行时服务:支持Markdown/JSON格式导出,分页批量加载消息
- 查询引擎与重试救援:对网关异常进行可重试救援,保障稳定性
- SSE与Socket.IO:分别用于HTTP长连接流式输出与双向实时通信
- 模型与仓库:定义对话与消息的数据结构、查询与写入操作
章节来源
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/socketio_server.py
架构总览
对话交互API采用“控制器-服务-引擎-传输-数据”分层架构,结合SSE与Socket.IO实现低延迟的实时交互;通过查询引擎与重试救援提升稳定性;通过导出服务与分页加载优化历史数据的检索与下载。
图表来源
- backend/app/api/tenant/agent_chat.py
- backend/app/services/ai/conversation_service.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/socketio_server.py
详细组件分析
聊天控制器(租户/用户)
- 职责
- 解析请求参数,构建聊天命令
- 选择SSE或Socket.IO作为传输通道
- 触发对话服务与引擎执行,并在完成后进行统计与持久化
- 关键流程
- 参数校验与权限检查
- 构建TurnCommand并调用引擎
- SSE模式下返回SSEStreamingResponse
- Socket.IO模式下通过命名空间广播事件
- 错误处理
- 网关异常与并发限制等场景触发重试救援
- 客户端断开连接时不记录用量
图表来源
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/socketio_server.py
章节来源
- backend/app/api/tenant/agent_chat.py
- backend/app/api/user/agent_chat.py
- backend/app/ai/runtime/query_engine.py
- backend/app/ai/sse.py
- backend/app/core/socketio_server.py
对话服务与导出
- 对话服务
- 统一管理对话创建、消息写入、统计与持久化
- 提供导出委托入口,将具体导 出工作交由导出运行时服务
- 导出运行时服务
- 支持Markdown/JSON两种格式
- 分批加载消息(默认每批1000条),避免大对话一次性加载导致内存压力
- 返回内容、文件名、格式与消息总数
图表来源
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/repositories/ai/conversation_message_repository.py
章节来源
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/conversation_export_runtime_service.py
- backend/app/repositories/ai/conversation_message_repository.py