3.4 KiB
3.4 KiB
Graph-RAG-Agent 集成说明
修改概述
本次修改将 yundage-backserver-test 前端从调用原有的 Java 后端(localhost:8080)改为调用 graph-rag-agent 的 FastAPI 后端(localhost:8000),使用 naive_search_tool 进行问答。
主要修改
1. chat-service.js 修改
修改文件:/services/api/chat-service.js
基础配置修改
- 服务地址:从
http://localhost:8080改为http://localhost:8000 - 会话管理:添加了会话ID生成功能,因为 graph-rag-agent 需要 session_id
API 接口映射
| 原接口 (Java) | 新接口 (graph-rag-agent) | 说明 |
|---|---|---|
POST /qa/ask |
POST /chat |
同步问答接口 |
POST /qa/ask/stream |
POST /chat/stream |
流式问答接口 |
GET /qa/conversations |
本地存储 | graph-rag-agent 无此接口,改为从 localStorage 读取 |
GET /qa/conversations/{id}/messages |
本地存储 | 同上 |
请求参数转换
原请求格式:
{
"mode": "chat",
"conversationId": null,
"message": "用户消息"
}
新请求格式:
{
"message": "用户消息",
"session_id": "生成的会话ID",
"debug": false,
"agent_type": "naive_rag_agent",
"use_deeper_tool": false,
"show_thinking": false
}
响应格式适配
由于前端期望特定的响应格式,在 sendMessage 方法中进行了格式转换:
// 转换响应格式以适配前端
return {
code: 200,
data: {
conversationId: messageData.conversationId || this.sessionId,
messageId: Date.now().toString(),
content: response.answer,
reference: response.reference,
kg_data: response.kg_data
},
message: '成功'
};
流式响应处理
graph-rag-agent 的流式响应格式与原后端不同,主要修改:
- 解析 SSE 数据格式从
event:+data:改为直接解析data: - 处理不同的状态类型:
start、token、done、error - 累积完整内容并在完成时返回
2. 新增功能
- generateSessionId():生成唯一的会话ID
- clearConversation():调用 graph-rag-agent 的
/clear接口清除会话历史
3. 本地存储集成
由于 graph-rag-agent 不提供会话列表和历史消息接口,修改为:
- 从
window.chatManager读取本地存储的会话数据 - 保持与原有前端逻辑的兼容性
使用说明
- 确保 graph-rag-agent 服务运行在
http://localhost:8000 - 确保 Neo4j 数据库已启动并包含必要的数据
- 前端会自动使用
naive_rag_agent进行问答 - 会话历史保存在浏览器本地存储中
注意事项
- 认证:graph-rag-agent 可能不需要 JWT 认证,但代码中保留了 Authorization header 以备后用
- 会话管理:每个用户会生成唯一的 session_id,格式为
{username}_{timestamp}_{random} - 错误处理:保留了原有的错误处理逻辑,包括认证失败跳转等
- 深度搜索:当前配置使用 naive_search_tool,如需使用 deep_research_tool,可修改
agent_type参数
后续优化建议
- 可以根据用户选择动态切换 agent_type(naive_rag_agent / deep_research_agent)
- 可以添加配置项控制是否显示思考过程(show_thinking)
- 可以实现真正的会话持久化,而不仅仅依赖浏览器本地存储