数据库查询聊天机器人

一个使用LangGraph和MCP服务器与PostgreSQL数据库交互的聊天机器人,通过自然语言查询数据库并提供智能响应。

  • by lakshit-hivel
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 lakshit-hivel/mcp

使用说明

🤖 带MCP的LangGraph聊天机器人

该项目使用LangGraph实现了一个聊天机器人,该聊天机器人与模型上下文协议(MCP)服务器交互以查询PostgreSQL数据库。它利用LLM(GPT-4o-mini)生成响应,并利用MCP工具访问和检索信息,为数据库功能提供对话界面。

🚀 主要特点

  • 通过聊天查询数据库: 允许用户通过聊天机器人界面使用自然语言查询PostgreSQL数据库。
  • MCP服务器交互: 与MCP服务器通信(pr_mcp_server.py)访问数据库查询工具。
  • LangGraph编排: 使用LangGraph管理对话流和工具执行。
  • LLM供电响应: 使用LLM(GPT-4o-mini)生成智能和上下文感知的响应。
  • 工具执行: 基于LLM生成的工具调用动态执行MCP工具。
  • 异步操作: 利用异步操作与MCP服务器进行无阻塞通信。
  • 模式探索: 提供用于探索数据库模式的工具,包括列出表和检索表模式。

🛠️ 技术栈

  • 前端: N/A(后端服务)
  • 后端: python
  • 数据库: PostgreSQL
  • AI/LLM:
    • langchain_openai (OpenAI LLMs)
  • 框架/库:
    • langgraph
    • langchain
    • mcp (消息控制协议)
    • psycopg2
    • httpx
  • 其他:
    • json
    • os
    • typing
    • asyncio
    • dotenv
  • 构建工具: 不适用

📦 入门指南

先决条件

  • Python 3.7+
  • PostgreSQL数据库
  • OpenAI API密钥
  • MCP已安装(pip install mcp)
  • 中列出的其他依赖项 requirements.txt

安装

  1. 克隆存储库:

    git clone <repository_url>
    cd <repository_directory>
    
  2. 创建虚拟环境(推荐):

    python -m venv venv
    source venv/bin/activate  # On Linux/macOS
    venv\Scripts\activate  # On Windows
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 配置环境变量:

    • 创建一个 .env 根目录中的文件。
    • 添加以下变量,用实际值替换占位符:
    OPENAI_API_KEY=<your_openai_api_key>
    DATABASE_URL="postgresql://<user>:<password>@<host>:<port>/<database>"
    

本地运行

  1. 运行聊天机器人:

    python langgraph/chatbot.py
    

💻 用法

聊天机器人运行后,您可以通过控制台与它进行交互。聊天机器人将使用LLM和MCP工具回答您关于数据库的问题。

示例问题:

  • “ID为123的拉取请求的摘要是什么?”
  • “列出洞察架构中的所有表。”
  • “pull_request表的架构是什么?”

📂 项目结构

├── langgraph/
│   └── chatbot.py          # LangGraph chatbot implementation
├── pr_mcp_server.py      # MCP server for database access
├── requirements.txt      # Project dependencies
├── README.md               # This file
└── .env                    # Environment variables (API keys, database credentials)

🤝 贡献

欢迎投稿!请按照以下步骤操作:

  1. 分叉存储库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 进行更改,并用描述性消息提交。
  4. 提交拉取请求。

📬 联系

如果您有任何问题或建议,请随时通过以下方式与我联系: lakshti@hivel.ai.

💖 谢谢

感谢您查看此项目!我希望这有帮助。

此README由以下人员编写 readme.ai,你去AI README生成器。