Pagila数据库人工智能助手
这个项目是一个基于Streamlit的聊天机器人,允许用户使用自然语言查询PostgreSQL数据库(Pagila模式)。它利用Google的Gemini API生成SQL,并利用模型上下文协议(MCP)安全执行数据库。
特性
- 自然语言到SQL:将英语问题转换为有效的SQL查询。
- 代理工作流:AI在编写查询之前自主探索数据库模式(列出表、检查列)。
- 矢量缓存(RAG):使用ChromaDB在本地缓存成功的SQL查询。如果再次询问类似的问题,缓存的SQL将立即执行,从而节省API的成本和时间。
- 模型上下文协议(MCP):使用专用的本地服务器(
mcp_pagila_server.py)以处理数据库操作,将UI与后端逻辑分离。 - 成本跟踪:监控令牌使用情况,并估算当前会话和全球历史的成本。
- 架构可视化:在UI中显示数据库架构图和元数据。
建筑
- 前端:流光灯(
app.py)处理用户输入、聊天历史和可视化。 - AI大脑:谷歌双子座(通过
google-generativeai)充当推理引擎。 - 后端:MCP服务器(
mcp_pagila_server.py)作为子流程运行,公开以下工具list_tables,get_table_schema,以及execute_sql. - 数据库:PostgreSQL托管Pagila示例数据库。
- 缓存:ChromaDB存储问题的嵌入及其相应的SQL。
先决条件
- Python 3.10+
- PostgreSQL数据库 上页 已安装架构。
- Google Gemini API密钥。
安装
- 克隆存储库:
git clone
cd mcp-pagila-server- 安装依赖项:
pip install -r requirements.txt- 配置环境:
创建一个 config.env 根目录中的文件:
GEMINI_API_KEY=your_google_api_key_here
PGHOST=localhost
PGUSER=your_postgres_user
PGPASSWORD=your_postgres_password
PGDATABASE=pagila
LOG_DIR=logs*注意:为了安全起见,建议使用只读数据库用户。*
用法
运行Streamlit应用程序:
streamlit run app.pyTesting&Inspection++streamlit_app.py是一个轻量级的聊天式界面,可以直接测试MCP服务器,而无需完整的Gemini Agent循环。它对于调试MCP服务器连接和运行原始SQL(使用run:前缀)或基于启发式的查询非常有用
项目结构
app.py:Streamlit主应用程序。mcp_pagila_server.py:MCP服务器实现。pagila-metadata.txt:AI的基于文本的模式摘要。requirements.txt:Python依赖关系。vector_store/:ChromaDB保存数据的目录(在git中忽略)。usage_stats.json:本地文件跟踪使用成本(在git中忽略)。
