数据查询对话代理

一个AI驱动的对话代理,允许用户通过自然语言查询与Databricks数据交互,提供命令行和基于Web的界面。

  • by josemzr
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 josemzr/databricks-mcp-langchain

使用说明

Rancher聊天代理

一个基于人工智能的聊天代理,允许您使用自然语言查询和用于MCP的Databricks Managed MCP服务器与您的copula数据进行交互。该应用程序提供了一个命令行界面和一个由Chainlit支持的基于web的UI。

特性

  • 🤖 数据的自然语言查询
  • 🔒 使用Azure托管身份进行安全身份验证
  • 💬 两个界面:CLI和基于web的(Chainlit)
  • 🔄 实时SQL查询执行
  • 📊 带有对话历史记录的格式化查询结果

先决条件

  • Python 3.10或更高版本
  • 紫外线 (Python包安装程序)
  • Node.js和npm(用于MCP远程)
  • 配置了托管身份的Azure OpenAI访问
  • 带有个人访问令牌的copula工作区

安装

  1. 克隆仓库

    git clone <your-repo-url>
    cd <your-repo-name>
    
  2. 安装uv (如果尚未安装)

    # On macOS and Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # On Windows
    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  3. 使用uv安装依赖项

    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    uv pip install -r requirements.txt
    
  4. 安装MCP远程

    npm install -g @modelcontextprotocol/remote
    

配置

  1. 复制环境模板

    cp .env.example .env
    
  2. 更新 .env 将您的凭据归档

    # Azure OpenAI Configuration
    AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
    AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4.1
    AZURE_OPENAI_API_VERSION=2024-08-01-preview
    
    # Databricks Configuration
    DATABRICKS_URL=https://your-workspace.databricks.com
    DATABRICKS_TOKEN=your-databricks-token-here
    
  3. 配置Azure身份验证

    此应用程序使用Azure托管身份进行身份验证。确保您拥有:

    • Azure CLI已安装并通过身份验证(az login)
    • Azure OpenAI资源的适当权限
    • 或者在启用了托管身份的Azure环境中运行

用法

命令行界面

运行交互式CLI代理:

uv run app.py

然后,您可以用自然语言询问有关copula数据的问题:

You: Show me all catalogs
Agent: [Lists available catalogs]

You: What tables are in the main schema?
Agent: [Shows tables in the main schema]

类型 exit 或 quit 结束会议。

Web界面(Chainlit)

启动Chainlit web应用程序:

uv run chainlit run chainlit_app.py

然后打开浏览器 http://localhost:8000 通过web UI与代理交互。

项目结构

.
├── app.py              # CLI-based chat agent
├── chainlit_app.py     # Chainlit web-based chat agent
├── chainlit.md         # Chainlit welcome screen
├── .env.example        # Environment variables template
├── .gitignore          # Git ignore rules
├── requirements.txt    # Python dependencies
└── README.md           # This file

运作原理

代理人使用:

  • Azure OpenAI:用于自然语言理解和响应生成
  • LangGraph:用于构建代理的推理流
  • MCP(模型上下文协议):用于连接到copula
  • copula SQL:用于执行只读查询

工作流程:

  1. 用户用自然语言提问
  2. 代理分析问题并确定需要哪些数据
  3. 代理程序使用MCP对ViewModel执行SQL查询
  4. 结果被格式化并呈现给用户
  5. 为上下文保留对话历史记录

安全说明

  • 永远不要承诺你的 .env 文件到版本控制
  • 在生产环境中使用Azure托管身份
  • copula令牌应具有所需的最小权限
  • 为了安全起见,代理只执行只读SQL查询

发展

利用紫外线进行开发

# Create a virtual environment
uv venv

# Activate it
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -r requirements.txt

# Add a new dependency
uv pip install <package-name>

# Update requirements.txt
uv pip freeze > requirements.txt

以开发模式运行

对于开发过程中的自动重新加载:

uv run chainlit run chainlit_app.py --watch

故障排除

身份验证问题

  • 确保您已使用Azure CLI登录: az login
  • 验证您的帐户是否可以访问Azure OpenAI资源
  • 检查Azure OpenAI端点和部署名称是否正确

copula连接问题

  • 验证copula URL是否正确(没有尾随斜线)
  • 确保ViewModel令牌有效并且具有必要的权限
  • 检查 mcp-remote 已正确安装: npm list -g @modelcontextprotocol/remote

缺失依赖项

  • 确保已安装Node.js和npm
  • 重新安装MCP遥控器: npm install -g @modelcontextprotocol/remote

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院

致谢