🤖 Superset AI聊天助手
Apache Superset的智能聊天界面,使用AI通过模型上下文协议(MCP)与Superset实例进行交互。
📦 v0.2.0版本 -现在有了分离的前端/后端架构和mcp使用集成!
🏗️ 建筑
该系统由三个主要部分组成:
┌─────────────────────────────────────────────────────────────┐
│ User Interface │
│ (Streamlit Chat App) │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ AI Backend │
│ ┌──────────────────────────────────────────────────┐ │
│ │ AI Agent (LangChain + GPT-4) │ │
│ │ - Processes natural language │ │
│ │ - Makes intelligent tool selections │ │
│ └──────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌──────────────────▼───────────────────────────────┐ │
│ │ MCP Client (mcp-use) │ │
│ │ - Connects to Superset MCP Server │ │
│ │ - Manages tool invocations │ │
│ └──────────────────┬───────────────────────────────┘ │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Superset MCP Server │
│ - Exposes Superset APIs as MCP tools │
│ - Handles authentication │
│ - Executes operations on Superset │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Apache Superset │
│ - Data visualization and exploration │
│ - SQL Lab │
│ - Dashboards and Charts │
└─────────────────────────────────────────────────────────────┘✨ 特性
- 自然语言接口:用简单的英语提问
- 智能刀具选择:AI自动选择正确的Superset工具
- 多步推理:处理需要多个操作的复杂查询
- 漂亮的UI:具有聊天历史记录的现代Streamlit界面
- 实时响应:流媒体支持,可实现更快的交互
- 完成Superset集成:通过聊天访问Superset的所有功能
🚀 快速开始
先决条件
- Apache超级集 本地或远程运行
- 超级设置MCP服务器 设置(参见
../superset-mcp/) - OpenAI API密钥
- Python 3.10+
安装
- 克隆存储库 (如果尚未完成)
- 导航到项目目录
cd superset-ai-chat- 安装依赖项
pip install -r requirements.txt- 配置环境变量
复制示例env文件:
copy .env.example .env编辑 .env 并添加您的凭据:
# OpenAI API Configuration
OPENAI_API_KEY=your_openai_api_key_here
# Superset MCP Server Path (absolute path)
SUPERSET_MCP_PATH=c:/Users/ademm/OneDrive/Desktop/demo-supabase/superset-mcp/main.py
# Superset Configuration
SUPERSET_BASE_URL=http://localhost:8088
SUPERSET_USERNAME=admin
SUPERSET_PASSWORD=admin- 启动应用程序
streamlit run frontend/app.py
# or simply:
python main.py- 打开浏览器 到
http://localhost:8501
💬 使用示例
应用程序运行后,您可以提出以下问题:
仪表板管理
- “显示我的所有仪表板”
- “创建一个名为“销售分析”的新仪表板”
- “仪表板5中有哪些图表?”
数据探索
- “列出所有可用数据库”
- “数据库1中有哪些表?”
- “显示销售数据库的架构”
sql查询
- “执行:从订单中选择\*,状态=‘已完成’,限制10”
- “运行查询以按地区获取总销售额”
- “按收入显示前5名客户”
数据集操作
- “列出所有数据集”
- “从客户表创建数据集”
- “数据集3中有哪些列?”
系统信息
- “我以谁的身份登录?”
- “我的权限是什么?”
- “显示最近的活动”
🛠️ 发展
项目结构
superset-ai-chat/
├── frontend/
│ ├── __init__.py
│ └── app.py # Streamlit chat interface
├── backend/
│ ├── __init__.py
│ ├── mcp_client.py # MCP client wrapper (optional)
│ └── ai_agent.py # AI agent with LangChain + mcp-use
├── main.py # Application entry point
├── requirements.txt # Python dependencies
├── .env.example # Example environment variables
├── .gitignore
└── README.md关键组件
1.MCP客户端(通过 mcp-use)
- 使用
mcp-use用于简化MCP集成的库 - 自动连接到Superset MCP服务器
- 处理工具发现和调用
- 与LangChain无缝集成
2.AI代理(backend/ai_agent.py)
- 使用LangChain
langchain-openai(GPT-4) - 杠杆
mcp-use用于工具绑定 - 通过工具调用处理多回合对话
- 管理对话流程和上下文
3.Streamlit应用程序(app.py)
- 提供聊天界面
- 管理会话状态
- 显示消息并处理用户输入
- 显示连接状态和示例问题
🔧 配置
环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
OPENAI_API_KEY | 您的OpenAI API密钥 | 是 | - |
SUPERSET_MCP_PATH | Superset MCP服务器脚本的路径 | 是 | - |
SUPERSET_BASE_URL | Superset实例的URL | 是 | http://localhost:8088 |
SUPERSET_USERNAME | 超级设置用户名 | 是 | 管理员 |
SUPERSET_PASSWORD | 超级设置密码 | 是 | 管理员 |
定制
您可以通过修改来自定义AI代理行为:
- 模型:更改
self.model在ai_agent.py使用不同的OpenAI模型 - 系统提示:在中编辑系统消息
ai_agent.py改变人工智能行为 - 用户界面主题:修改CSS
app.py自定义外观
🧪 测试
手动测试连接:
import asyncio
from backend import get_agent
async def test():
agent = get_agent()
await agent.initialize()
response = await agent.chat([
{"role": "user", "content": "List all dashboards"}
])
print(response["content"])
asyncio.run(test())🔒 安全说明
- API密钥:永远不要承诺你的
.env文件。确保API密钥的安全。 - 超级设置访问:AI具有与中配置的Superset用户相同的权限
.env - 网络:确保MCP服务器和Superset位于受信任的网络上
- 速率限制:注意OpenAI API速率限制
🐛 故障排除
连接问题
问题:“连接到Superset时出错”
- 解决方案:验证Superset MCP服务器是否正在运行,路径是否在
.env是正确的
问题:“未设置OPENAI_API_KEY”
- 解决方案:将您的OpenAI API密钥添加到
.env文件
MCP服务器问题
问题:MCP工具未加载
- 解决方案:检查一下
SUPERSET_MCP_PATH指向正确的位置 - 解决方案:验证是否安装了Superset MCP服务器依赖项
运行期错误
问题:“找不到模块”
- 解决方案:重新安装依赖关系:
pip install -r requirements.txt
问题:响应缓慢
- 解决方案:对于需要多个工具调用的复杂查询,这是正常的
- 解决方案:考虑使用更快的OpenAI模型(尽管能力较弱)
📚 额外资源
🤝 贡献
欢迎投稿!请随时提交问题或拉取请求。
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
🙏 致谢
- Apache Superset团队打造令人惊叹的可视化平台
- 模型上下文协议规范的拟人化
- 具有函数调用功能的GPT模型的OpenAI
