SQL聊天机器人及仪表盘

一个Streamlit应用程序,允许用户通过自然语言与SQL数据库交互并可视化数据库趋势。

  • by mcanalescl
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mcanalescl/mcp-sql-chatbot-dashboard

使用说明

MCP SQL聊天机器人和仪表板

一个Streamlit应用程序,允许用户使用自然语言与SQL数据库交互,并可视化数据库趋势。该应用程序利用MCP(模块化控制协议)连接到SQL服务器,执行查询并生成交互式仪表板。

特性

  • 自然语言界面: 用简单的英语询问有关数据库的问题。
  • SQL查询生成: 自动将自然语言问题转换为SQL查询。
  • 交互式仪表板: 从数据库生成可视化和见解。
  • 实时结果: 立即获得对您的询问的回复。
  • 可下载的仪表板: 将仪表板导出为HTML文件。

先决条件

  • Python 3.10或更高版本
  • UV包管理器
  • 访问SQL数据库
  • OpenAI或Groq的API密钥

环境变量

在中设置以下环境变量 .env 项目根目录中的文件:

  • MODEL_API_KEY:OpenAI或Groq的API密钥
  • MODEL_ID:要使用的型号ID(例如,Groq的“llama-3.3-70b-university”或OpenAI的“gpt-4”)
  • DB_HOST:数据库服务器的主机名或IP地址
  • DB_USER:数据库的用户名
  • DB_PASSWORD:数据库的密码
  • DB_NAME:数据库的名称

设置和安装

  1. 克隆存储库:

    git clone https://github.com/mcanalescl/MCP-SQL-Chatbot-Dashboard
    cd MCP-SQL-Chatbot-Dashboard
    
  2. 使用UV安装依赖项:

    uv sync
    

    此命令将:

    • 创建虚拟环境(如果不存在)
    • 安装中列出的所有依赖项 pyproject.toml 文件
  3. 创建 .env 文件:

    创建一个 .env 在项目根目录中创建文件并添加环境变量:

    DB_HOST=your_db_host
    DB_USER=your_db_user
    DB_PASSWORD=your_db_password
    DB_NAME=your_db_name
    MODEL_API_KEY=your_api_key
    MODEL_ID=your_model_id
    

运行应用程序

  1. 激活虚拟环境:

    source .venv/bin/activate  # On Linux/macOS
    .venv\Scripts\activate     # On Windows
    
  2. 运行Streamlit应用程序:

    streamlit run app.py
    
  3. 访问应用程序: 打开网络浏览器,转到终端中提供的URL(通常 http://localhost:8501).

用法

聊天机器人选项卡

  1. 提问: 在“聊天机器人”选项卡中,用自然语言键入您对数据库的问题(例如,“列出所有员工”,“最畅销的产品是什么?”)。
  2. 查看结果: 聊天机器人将以数据的自然语言摘要进行响应。

仪表板选项卡

  1. 生成仪表板: 在“仪表板”选项卡中,单击“生成仪表板”按钮。
  2. 查看仪表板: 该应用程序将分析数据库模式,并生成一个带有图表和表格的交互式HTML仪表板。
  3. 下载仪表板: 单击“下载仪表板HTML”按钮将仪表板另存为HTML文件。

关键组件

  • agent.py:

    • 定义处理自然语言到SQL转换的代理
    • 使用MCP工具包与SQL数据库交互
    • 实现异步操作以实现高效的数据库通信
    • 返回查询结果的自然语言摘要
  • dashboard_agent.py:

    • 处理仪表板生成和可视化
    • 分析数据库模式以确定关键指标
    • 根据数据类型生成适当的可视化
    • 使用Chart.js和Tailwind CSS创建交互式HTML仪表板
  • app.py:

    • 主Streamlit应用程序
    • 为聊天机器人和仪表板提供用户界面
    • 使用持久事件循环管理异步操作
    • 处理会话状态和用户交互

技术细节

  • 异步操作: 该应用程序使用Python的asyncio进行高效的数据库操作
  • 事件循环管理: 为了Streamlit兼容性,维护了一个持久的事件循环
  • MCP集成: 使用最新的MCP库进行SQL server通信
  • 型号支持: 兼容OpenAI和Groq语言模型

贡献

欢迎投稿!请随时打开问题或提交pull请求。

许可证

麻省理工学院