高校问答机器人

基于Agentic RAG和MCP技术的AI聊天机器人,为IMT Mines Alès国际学生提供学术信息、行政流程和校园服务支持。

  • by Samreth99
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Samreth99/agentic-mcp-imt

使用说明

IMT Mines Alès聊天机器人-与MCP合作的RAG代理

一个由人工智能驱动的聊天机器人,旨在为IMT Mines Alès的国际学生提供学术信息、行政程序和校园服务。该项目实现了 代理检索增强生成(RAG) 系统使用 模型上下文协议(MCP) 和 LangGraph.


🎥 演示视频

https://github.com/user-attachments/assets/5bc3b84b-d52a-4f63-94f9-d4db74552800


📋 目录


🎯 概述

这个聊天机器人通过回答以下问题为国际学生提供全天候帮助:

  • 课程大纲和学术要求
  • 行政程序和文件
  • 校园设施和学生服务
  • 关于IMT Mines Alès的一般信息

系统实现 9.26/10 总分(由GPT-4o作为评委评估),表明:

  • 8.91/10 正确性
  • 9.12/10 完整性
  • 10.00/10 安全

🏗️ 建筑

该系统由三个主要部分组成:

┌─────────────────────────────────────────────────────────────┐
│                     Frontend (React + TS)                    │
│                     Port: 5173                               │
└──────────────────────────┬──────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────┐
│              Backend (FastAPI + LangGraph Agent)             │
│                     Port: 8000                               │
│  ┌────────────────────────────────────────────────────┐     │
│  │   ReAct Agent (gpt-oss-20b via Groq)               │     │
│  │   • Reasoning & Tool Orchestration                 │     │
│  │   • Memory Persistence                             │     │
│  └────────────┬───────────────────────────────────────┘     │
└───────────────┼─────────────────────────────────────────────┘
                │
                ▼
┌─────────────────────────────────────────────────────────────┐
│              MCP Server (RAG Tools)                          │
│                     Port: 3000                               │
│  ┌────────────────────────────────────────────────────┐     │
│  │   Tools:                                           │     │
│  │   • ingest_documents (PDF/URL)                     │     │
│  │   • retrieve_documents (Semantic Search)           │     │
│  │   • get_vector_store_info                          │     │
│  │   • clear_vector_store                             │     │
│  └────────────┬───────────────────────────────────────┘     │
└───────────────┼─────────────────────────────────────────────┘
                │
                ▼
┌─────────────────────────────────────────────────────────────┐
│         ChromaDB Vector Store + BGE-M3 Embeddings            │
│         • Chunk Size: 1000 tokens                            │
│         • Overlap: 200 tokens                                │
│         • Top-K: 5 documents                                 │
└─────────────────────────────────────────────────────────────┘

关键设计决策

  • BGE-M3嵌入:用于检索的最先进的多语言嵌入模型
  • 重演模式:支持复杂查询的推理和动作交织
  • MCP协议:AI与工具通信的标准化接口
  • 低延迟推断:Groq API提供亚秒响应时间
  • 国家代理人:LangGraph管理对话历史和上下文

✨ 特性

  • 🔍 语义搜索:使用密集向量嵌入检索相关文档
  • 🤖 重新代理:通过复杂的多步骤查询进行推理
  • 📚 文档管理:从本地文件、目录或URL中获取PDF
  • 🌐 多语言支持:BGE-M3支持多种语言
  • 💬 聊天界面:使用markdown渲染清理基于React的UI
  • 🔒 安全第一:在评估中获得完美的10/10安全分数
  • 📊 可观察推理:透明的代理思维过程

📦 先决条件

在开始之前,请确保已安装以下内容:

  • Python 3.11+ (用Python 3.11测试)
  • Node.js 18+ 和 npm
  • Git

需要API密钥

您需要API密钥用于:

  • 格罗克API:为 gpt-oss-20b 模型(获取API密钥)
  • OpenAI API (可选):适用于法学硕士作为法官

创建 .env 项目根目录中的文件:

GROQ_API_KEY=your_groq_api_key_here
# OPENAI_API_KEY=your_openai_api_key_here  # Optional

🚀 安装

1.克隆存储库

git clone https://github.com/Samreth99/agentic-mcp-imt.git
cd agentic-mcp-imt

2.安装UV包管理器

UV是一个快速的Python包安装程序和解析器。按照以下步骤安装 官方文件:

Windows(PowerShell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

3.创建虚拟环境

uv venv .venv

4.激活虚拟环境

窗户:

.venv\Scripts\activate

macOS/Linux:

source .venv/bin/activate

5.安装项目依赖项

uv pip install .

这将安装所有必需的依赖项,包括:

  • LangChain和LangGraph
  • FastAPI和Uvicorn
  • ChromaDB
  • 句子转换器
  • 还有更多。..

6.安装前端依赖项

cd frontend
npm install
cd ..

🏃 运行应用程序

应用程序需要 三个独立的终端窗口,每个运行不同的组件。

终端1:MCP服务器(RAG工具)

# Make sure virtual environment is activated
uv run -m mcp_server.server.tools.rag.rag_server

预期产量:

MCP Server running on http://localhost:3000
Vector store initialized with ChromaDB

终端2:代理后端服务器

# Make sure virtual environment is activated
uv run -m agent.main

预期产量:

INFO:     Uvicorn running on http://127.0.0.1:8000
INFO:     Application startup complete.

终端3:前端开发服务器

cd frontend
npm run dev

预期产量:

VITE v5.x.x  ready in xxx ms

➜  Local:   http://localhost:5173/
➜  Network: use --host to expose

访问应用程序

打开浏览器并导航到:

http://localhost:5173

您应该看到聊天界面已准备好接受查询!


📂 项目结构

agentic-mcp-imt/
├── agent/                         # Backend agent implementation
│   ├── main.py                    # FastAPI application entry point
│   ├── agent_client.py            # Agent client for testing
│   ├── api/                       # FastAPI routes and services
│   ├── config/                    # Configuration files
│   │   └── prompts.py             # System prompts and templates
│   ├── evaluation/                # Evaluation
│   │   └── data_set.py            # Testset
│   │   └── llm_as_a_judge.py      # LLM-as-a-Judge Evalulation
│   ├── graph/                     # LangGraph implementation
│   │   └── graph_builder.py       # LangGraph ReAct agent logic
│   ├── schemas/                   # Pydantic schemas
│   └── utils/                     # Utility functions
│
├── mcp_server/                    # MCP server implementation
│   └── server/
│       └── tools/
│           └── rag/
│               ├── rag_server.py  # MCP RAG tool server
│               └── ingestion/     # Data ingestion pipeline
│                   └── vector_store.py # ChromaDB interface
│
├── frontend/                      # React TypeScript frontend
│   ├── src/
│   │   ├── components/           # React components
│   │   ├── api/                  # API services
│   │   └── App.tsx               # Main application
│   ├── package.json
│   └── vite.config.ts
│
├── evaluation_results.json        # Evaluation metrics
├── pyproject.toml                 # Python project configuration
├── docker-compose.yaml            # Docker orchestration
├── Dockerfile.backend             # Dockerfile for the backend
├── Dockerfile.mcp                 # Dockerfile for the MCP server
├── uv.lock                        # UV lock file
└── README.md                      # This file

🛠️ 使用的技术

后端

  • LangChain和LangGraph:代理编排和推理
  • 快速API:高性能异步web框架
  • ChromaDB:用于嵌入的矢量数据库
  • BGE-M3:多语言嵌入模型
  • 格罗克API:超低延迟LLM推理
  • 模型上下文协议(MCP):标准化工具界面

前端

  • 反应18:UI框架
  • TypeScript:类型安全开发
  • 维特:快速构建工具
  • 尾风CSS:实用性优先的造型

基础设施

  • 紫外线:快速Python包管理
  • Docker&Docker编写:集装箱化
  • Uvicorn:ASGI服务器

📊 评估结果

使用评估 GPT-4o担任法官 33道试题:

度量 代理RAG MCP 微调基线
正确性 8.91/10 ⭐ 5.32/10
完整性 9.12/10 ⭐ 4.85/10
安全 10.00/10 ⭐ 9.35/10
总体评分 9.26/10 ⭐ 6.17/10

主要发现

  • ✅ 接地响应:RAG检索确保事实准确性
  • ✅ 综合答案:多文档综合提供完整的信息
  • ✅ 完善的安全:严格遵守道德准则
  • ✅ 可扩展体系结构:无需再培训即可轻松更新知识库

🔮 未来工作

生产基础结构

  • []PostgreSQL用于用户管理
  • []MongoDB用于对话历史记录
  • []OAuth 2.0身份验证
  • []带有GitHub操作的CI/CD管道
  • []Kubernetes部署
  • []监控和警报

模型改进

  • [ ] 混合检索:结合BM25稀疏+密集嵌入
  • [ ] 重新排序:交叉编码器,提高精度
  • [ ] 自适应RAG:查询复杂性感知检索
  • [ ] 自我RAG:自我反思一代
  • [ ] 基于人类反馈的强化学习:收集用户反馈以持续改进

功能扩展

  • []调度管理MCP服务器
  • []管理程序MCP服务器
  • []活动日历集成
  • []多语言用户界面支持
  • []导出对话历史记录

🤝 贡献

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

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


相关技术


🙏 致谢

  • IMT Mines Alès提供机构知识库
  • 模型上下文协议规范的拟人化
  • LangChain团队为优秀的代理框架
  • Groq提供超快速LLM推理

Made with ❤️ for international students at IMT Mines Alès