聊天界面提供RAGFlow内的对话交互能力,使用户能够与AI助手沟通、搜索知识库并与代理工作流互动。本文档涵盖了前端聊天组件、消息处理、实时通信以及与RAG管道的集成。
有关驱动对话工作流的代理流系统的信息,请参阅代理流系统。有关处理查询的RAG管道的详细信息,请参阅RAG管道。
聊天界面采用React组件构建,模块化架构支持多种聊天模式,包括标准对话、知识库搜索、共享聊天和代理交互。
来源:web/src/pages/chat/index.tsx1-394 web/src/pages/chat/chat-container/index.tsx1-121 web/src/components/message-item/index.tsx1-245 web/src/hooks/chat-hooks.ts1-643 web/src/pages/chat/hooks.ts1-617 web/src/hooks/logic-hooks.ts1-568
来源:web/src/hooks/logic-hooks.ts157-247 web/src/services/chat-service.ts1-134 web/src/hooks/chat-hooks.ts86-196
消息系统处理不同消息类型、实时流以及包括文档和引用在内的富内容显示。
MessageItem组件web/src/components/message-item/index.tsx41-245处理用户和助手消息,并提供不同的布局和功能。
| 消息类型 | 角色 | 特性 |
|---|---|---|
| 用户消息 | MessageType.User | 复制、重新生成、删除、文档上传 |
| 助手消息 | MessageType.Assistant | 复制、点赞/点踩、文本转语音、提示查看 |
useSelectDerivedMessages钩子web/src/hooks/logic-hooks.ts310-411管理消息数组状态。
addNewestQuestion:添加用户消息和空助手响应addNewestAnswer:使用流式内容更新最后一条助手消息removeLatestMessage:移除最后的问答对removeMessageById:移除特定消息来源:web/src/hooks/logic-hooks.ts310-411 web/src/components/message-item/index.tsx26-39 web/src/pages/chat/hooks.ts292-347
系统使用Server-Sent Events (SSE) 进行实时消息流传输。
在web/src/hooks/logic-hooks.ts157-247中实现的关键流功能:
AbortController支持取消done状态跟踪进度来源:web/src/hooks/logic-hooks.ts157-247 web/src/pages/chat/hooks.ts365-388
聊天界面管理包含多个会话的层级对话结构。
在web/src/hooks/chat-hooks.ts86-546中处理的会话管理系统
ChatSearchParams管理的关键URL参数
dialogId:当前聊天助手conversationId:当前会话isNew:临时会话标志来源:web/src/hooks/chat-hooks.ts72-81 web/src/hooks/chat-hooks.ts86-196 web/src/hooks/chat-hooks.ts243-401
聊天界面与文档系统集成,支持文件上传、引用和内容显示。
文档处理功能
来源:web/src/components/message-item/index.tsx59-91 web/src/components/message-item/index.tsx162-188 web/src/pages/chat/chat-container/index.tsx49-56
RAGFlow支持多种聊天界面变体以适应不同的使用场景。
| 接口类型 | 组件 | 目的 | 主要功能 |
|---|---|---|---|
| 标准聊天 | pages/chat/index.tsx | 主要对话界面 | 对话管理、会话历史记录 |
| 搜索界面 | pages/search/index.tsx | 知识库搜索 | 文档过滤、分块显示 |
| 共享聊天 | pages/chat/share/large.tsx | 外部嵌入 | 简化界面,无需认证 |
| 代理流聊天 | pages/flow/chat/box.tsx | 代理工作流交互 | 流程执行、组件集成 |
搜索界面web/src/pages/search/index.tsx47-285扩展了聊天范式以用于知识检索。
搜索界面功能
来源:web/src/pages/search/index.tsx47-285 web/src/pages/search/hooks.ts22-136 web/src/pages/search/sidebar.tsx25-162
共享聊天界面web/src/pages/chat/share/large.tsx21-125提供外部嵌入功能。
共享聊天实现中的主要区别
useSendSharedMessage而不是标准消息钩子来源:web/src/pages/chat/share/large.tsx21-125 web/src/pages/chat/shared-hooks.ts43-149