Skip to main content

Multi-Agent SQL Query System with MCP Support

Project description

多智能体数据查询系统 v2.1

v2.1 新增:内置 Web 前端(Markdown 渲染、即时加载长期记忆)、REST API、启动脚本等。

基于LangGraph的一主两从多智能体架构,实现智能的数据库查询和分析功能,支持长短期记忆。 https://github.com/user-attachments/assets/3b1b1513-3c92-4952-b8e1-7e62e77630c9

架构设计

主智能体 (MasterAgent)
├── 意图识别:判断用户问题类型(结合用户偏好)
├── 任务路由:选择合适的处理路径
├── 短期记忆:智能压缩对话历史(LLM总结)
├── 长期记忆:跨会话用户偏好和知识
└── 结果汇总:整合子智能体输出

子智能体1 (SQLQueryAgent)
└── NL2SQL转换、执行查询

子智能体2 (DataAnalysisAgent)
└── 数据分析、生成洞察

核心功能

1. 意图识别 - 自动判断4种问题类型

  • simple_answer: 简单问候
  • sql_only: 数据查询
  • analysis_only: 分析历史数据
  • sql_and_analysis: 查询+分析

2. 智能路由 - 根据意图调用不同智能体

  • 主智能体直接回答 / SQL子智能体 / 数据分析子智能体 / 两者协作

3. 双层记忆系统 ⭐NEW

  • 短期记忆(MemorySaver)
    • 会话内对话历史保留
    • 智能压缩:消息>10条或token>1000时LLM自动总结
    • 支持引用历史查询结果
  • 长期记忆(LongTermMemory)
    • 跨会话持久化用户偏好和知识
    • 自动提取:对话≥4条消息时自动提取
    • 个性化上下文:意图识别时注入用户历史
    • SQLite存储:users、user_preferences、user_knowledge

4. 用户会话管理 ⭐NEW

  • 用户登录系统(user_id)
  • 会话隔离(session_id)
  • 智能thread_id生成(user_id_session_id)
  • 特殊命令:new(新会话)、info(查看信息)

5. MCP集成 - 通过MCP协议执行SQL

  • 独立的MCP服务器处理数据库操作
  • 支持扩展多数据源

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 设置API密钥

# Windows
set DASHSCOPE_API_KEY=your_api_key

# Linux/Mac
export DASHSCOPE_API_KEY=your_api_key

3. 初始化数据库

cd intelligent_data_query/data
python init_db.py              # 初始化业务数据库
python init_memory_db.py       # 初始化长期记忆数据库

4. 运行系统(命令行)

cd intelligent_data_query
python agent.py

系统会提示输入用户ID,输入后即可开始使用。同一user_id可以在不同会话中保留个人偏好。

5. 启动 Web 前端(v2.1)

# Windows
cd intelligent_data_query
start_web.bat

# Linux/Mac
cd intelligent_data_query
chmod +x start_web.sh
./start_web.sh

浏览器访问:http://localhost:5000

前端特性(v2.1):

  • Web 聊天界面,支持 Markdown 渲染与代码高亮
  • 聊天区滚动优化,输入框固定底部
  • 登录后直接从 long_term_memory.db 读取并展示用户信息(无需对话总结)
  • REST API:/api/login/api/query/api/new_session/api/user_info/api/health

特殊命令

  • new - 开始新会话(清空短期记忆,保留长期记忆)
  • info - 查看当前用户信息和偏好
  • exit/quit - 退出系统

测试问题

系统示例测试问题,覆盖所有意图类型:

简单问候

  • 你好,你能帮我做什么?

数据查询

  • 公司总共有多少个部门?每个部门分别在哪个城市?
  • 研发部有多少名员工?他们的职位分布是怎样的?
  • 哪些员工的基本工资超过30000元?
  • 产品部和设计部分别有多少名员工?

仅分析

  • 帮我分析一下上一次查询的数据

查询+分析

  • 对比一下研发部、产品部和设计部的平均薪资水平
  • 销售部的人员和薪资结构是怎样的?有什么特点?
  • 找出薪资最高的10名员工,分析他们的职位和部门分布特征
  • 分析公司各城市的人员分布和薪资差异,给出优化建议

目录结构

intelligent_data_query/
├── agents/                      # 智能体模块
│   ├── master_agent.py         # 主智能体(含记忆管理)
│   ├── sql_agent.py            # SQL查询子智能体
│   └── analysis_agent.py       # 数据分析子智能体
├── memory/                      # 记忆模块 ⭐NEW
│   ├── long_term_memory.py     # 长期记忆管理器
│   └── memory_extractor.py     # 记忆提取器
├── agent.py                    # 主入口(含用户登录)
├── prompts.py                  # 提示词定义
├── test_questions.py           # 测试问题集
├── config/
│   └── config.yaml             # 配置文件(含记忆配置)
├── data/
│   ├── company.db              # 业务数据库
│   ├── long_term_memory.db     # 长期记忆数据库 ⭐NEW
│   ├── init_db.py              # 业务数据库初始化
│   └── init_memory_db.py       # 记忆数据库初始化 ⭐NEW
├── static/                     # Web 前端(v2.1)
│   ├── index.html             # 主页面(聊天界面)
│   ├── style.css              # 样式(含滚动条/Markdown适配)
│   └── app.js                 # 前端逻辑(Markdown、用户信息、API)
├── start_web.bat              # Windows 启动脚本
├── start_web.sh               # Linux/Mac 启动脚本
├── video/
│   └── demo.mp4              # 演示视频
└── mcp_sql_server.py           # MCP SQL服务器

配置说明

编辑 config/config.yaml:

llm:
  provider: "dashscope"
  model: "qwen-turbo"
  temperature: 0.1
  max_tokens: 2048

database:
  path: "./data/company.db"

nl2sql:
  num_examples: 3

# 记忆配置 ⭐NEW
memory:
  long_term_db: "./data/long_term_memory.db"  # 长期记忆数据库路径
  short_term_max_tokens: 1000                  # 短期记忆最大token数
  compression_threshold: 10                    # 超过N条消息开始压缩
  auto_extract_knowledge: true                 # 自动提取长期记忆

技术栈

  • LangGraph: 工作流编排
  • LangChain: LLM调用和管理
  • 通义千问: 大语言模型
  • MCP: Model Context Protocol
  • SQLite: 数据库
  • Rich: 终端美化

已完成功能 ✅

  • 支持长期记忆: 使用SQLite持久化用户偏好和知识 ✅ (v2.0)
  • 上下文压缩: LLM智能总结对话历史 ✅ (v2.0)
  • 用户系统: 支持多用户登录和会话管理 ✅ (v2.0)
  • 自动记忆提取: 从对话中自动提取用户偏好 ✅ (v2.0)
  • Web 前端: 聊天界面 + Markdown 渲染 + 代码高亮 + 即时读取长期记忆 ✅ (v2.1)

下一步计划扩展

1. 长期记忆深度应用

  • 个性化查询推荐: 基于用户历史自动推荐相关查询
  • 智能查询补全: 根据用户偏好自动补全查询参数
  • 偏好自适应展示: 自动调整数据展示格式(表格/图表/摘要)
  • 用户行为分析: 分析用户查询模式,提供优化建议
  • 团队协作记忆: 支持团队成员共享特定知识库

2. 记忆检索优化

  • 向量检索: 使用ChromaDB替代简单的LIKE匹配
  • 记忆衰减机制: 根据时间和访问频率调整知识置信度
  • 多模态记忆: 保存查询结果的图表、文件等
  • 全文搜索: 为user_knowledge添加FTS5全文索引

3. 智能体扩展

  • 报表生成子智能体: 自动生成PDF/Excel报表
  • 数据可视化子智能体: 生成图表和仪表板
  • 异常检测子智能体: 主动发现数据异常并告警

4. 技术优化

  • Schema智能检索: 大型数据库只获取相关表结构
  • 支持更多数据源: MySQL、PostgreSQL、ClickHouse等
  • 并行调用优化: 对独立任务实现并行处理
  • 流式输出: 支持实时流式返回分析结果

注意事项

  • 确保设置 DASHSCOPE_API_KEY 环境变量
  • 初始化业务数据库和长期记忆数据库
  • 安装所有依赖包
  • 使用相同的 user_id 可以跨会话保留个人偏好
  • 长期记忆数据库建议定期备份

更新日志

v2.1 (2025.11.05)

  • ✨ 新增:内置 Web 前端(static/),支持 Markdown 渲染与代码高亮
  • ✨ 新增:REST API(/api/login/api/query/api/new_session/api/user_info/api/health
  • ✨ 新增:登录后直接读取 long_term_memory.db,即时展示用户偏好/知识
  • ✨ 新增:启动脚本 start_web.bat / start_web.sh
  • 🎬 新增:项目演示视频 video/demo.mp4
  • 🔧 优化:聊天滚动条与输入框体验(输入框固定底部)

v2.0 (2025.10.21)

  • ✨ 新增:长期记忆系统(用户偏好、知识跨会话持久化)
  • ✨ 新增:短期记忆智能压缩(LLM自动总结)
  • ✨ 新增:用户登录和会话管理系统
  • ✨ 新增:自动记忆提取(从对话中提取偏好和知识)
  • 🔧 优化:意图识别注入用户历史上下文
  • 🔧 优化:messages使用add_messages累加器

v1.0 (2025.10.16)

  • 🎉 初始版本
  • ✨ 一主两从多智能体架构
  • ✨ 意图识别和智能路由
  • ✨ NL2SQL查询和数据分析
  • ✨ 短期会话记忆(MemorySaver)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_kerwinmai_multi_agent_exp-2.1.0.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_kerwinmai_multi_agent_exp-2.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_kerwinmai_multi_agent_exp-2.1.0.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_kerwinmai_multi_agent_exp-2.1.0.tar.gz
Algorithm Hash digest
SHA256 93bd0f212ead0e4fc2b18ecd69bd1c08c357d7da60c7e3a86c4ffe12e61df94c
MD5 da74332e5f466b3f116497b37c12fefb
BLAKE2b-256 82abad34f7cb3c3a6fef276bfe164d9d134be72bd409a1994b0db9b547dcd92a

See more details on using hashes here.

File details

Details for the file iflow_mcp_kerwinmai_multi_agent_exp-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_kerwinmai_multi_agent_exp-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 33.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_kerwinmai_multi_agent_exp-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d78a81dc52a27d81e36f1722963c0b3d6c646bd55321ca227d35348f57efc198
MD5 3562613d4f2859a07865138e329a6116
BLAKE2b-256 c4b6b8d3ab8fc8ceb07e4543c356ceff5c28081a60c045e416a992c303cadaff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page