古典音乐知识图谱聊天机器人

一个集成DOREMUS知识图谱的聊天机器人,通过模型上下文协议(MCP)实现古典音乐元数据的智能查询。

  • by d4darius
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 d4darius/ChatbotMCP

使用说明

DOREMUS聊天机器人-MCP集成

一个聊天机器人应用程序,与 DOREMUS知识图谱 通过 模型上下文协议(MCP),实现古典音乐元数据的智能查询。

🎵 概述

该项目结合了 React前端 带着一个 FastAPI后端 提供一个交互式界面,用于查询DOREMUS知识图谱——一个包括作品、作曲家、表演、录音和乐器在内的古典音乐信息的综合数据库。

该应用程序使用:

  • LangGraph 用于构建代理工作流
  • LangChain 用于LLM与工具绑定的集成
  • 模型上下文协议(MCP) 用于结构化访问DOREMUS知识图谱
  • 多个LLM提供商 (OpenAI、Groq、Anthropic、Ollama)

📁 项目结构

ChatbotMCP/
├── backend/                    # Python FastAPI backend
│   ├── src/
│   │   ├── server.py          # FastAPI application & HTTP endpoints
│   │   ├── .env               # Environment variables & API keys
│   │   └── agent/
│   │       ├── mcp_testing_agent.py       # Agent initialization & LLM setup
│   │       ├── extended_mcp_client.py     # Custom MCP client wrapper
│   │       ├── prompts.py                 # System prompts & agent instructions
│   │       └── __init__.py
│   ├── pyproject.toml         # Poetry project configuration
│   └── requirements.txt        # Python dependencies
│
├── frontend/                   # React + Vite frontend
│   ├── src/
│   │   ├── App.jsx            # Main React component
│   │   ├── App.css            # Application styles (Tailwind CSS)
│   │   ├── main.jsx           # React entry point
│   │   └── assets/            # Static assets
│   ├── index.html             # HTML template
│   ├── vite.config.js         # Vite configuration
│   ├── tailwind.config.js     # Tailwind CSS configuration
│   ├── package.json           # Node.js dependencies
│   └── public/                # Public static files
│
└── README.md                  # This file

🚀 如何设置服务器

克隆Repo

git clone https://github.com/d4darius/ChatbotMCP.git
cd ChatbotMCP

设置.env变量

创建文件

nano .env

编辑 .env 使用API密钥:

OPENAI_API_KEY=sk-...
GROQ_API_KEY=gsk_...
LANGSMITH_API_KEY=lsv2_...
OLLAMA_API_URL=https://mcp-kg-ollama.tools.eurecom.fr
OLLAMA_API_KEY=...
  1. 构建docker容器:

    docker build -t mcp-chatbot-app .
    

然后启动它

   docker run -d \
  --name my-chatbot \
  --restart always \
  -p 8001:8001 \
  --env-file .env \
  mcp-chatbot-app

🔌 API终点

POST /chat

向聊天机器人发送消息并接收流媒体响应。

请求:

{
  "message": "Find all compositions by Beethoven in the knowledge graph",
  "model": "openai"
}

答复: 服务器发送事件(SSE)流,具有:

  • type: "token" -LLM的流式文本响应
  • type: "tool" -工具调用(例如,生成的SPARQL查询)

查询参数:

  • model:法学硕士提供者(openai, groq, anthropic, ollama)

GET /

返回欢迎消息和服务器状态。

🤖 运作原理

graph LR
    A[User Message] -->|React Frontend| B[FastAPI Backend]
    B -->|HTTP Request| C[Agent Initialization]
    C -->|MCP Client| D[DOREMUS Knowledge Graph]
    D -->|SPARQL Results| E[LLM Processing]
    E -->|Streaming Response| B
    B -->|Server-Sent Events| A

代理工作流

  1. 用户输入:用户通过React前端发送自然语言查询
  2. 代理初始化:后端使用以下命令初始化LangGraph React代理:
    • 选定的法学硕士(OpenAI、Groq、Anthropic或Ollama)
    • DOREMUS知识图谱中的MCP工具
    • DOREMUS本体知识系统提示
  3. 工具绑定:LLM可以调用MCP工具:
    • 探索DOREMUS本体论
    • 查找实体URI
    • 检索实体属性
    • 执行SPARQL查询
  4. 回应:格式化结果作为流返回到前端

🛠️ 关键技术

后端

技术 目的
快速API REST API框架
优维康 ASGI服务器
LangChain LLM编排和工具集成
LangGraph 代理工作流(ReAct代理模式)
langchain mcp适配器 MCP↔ LangChain兼容性
主控程序 模型上下文协议实现

前端

技术 目的
反应19 UI框架
维特 快速打包器和开发服务器
Tailwind CSS 实用程序优先的CSS框架
Lucide React 图标库

📊 DOREMUS知识图谱

多雷穆斯 是基于 CIDOC-CRM 随着 FRBR (工作表达表现项)扩展。

数据模型

  • 工作:概念性音乐理念(如“贝多芬第九交响曲”)
  • 表达:用记谱法、标题、作曲家实现音乐
  • 显现:实物记录或出版
  • 物品:表现形式的具体实例
  • 事件:表演或录制活动

词汇

  • 音乐键
  • 模式
  • 类型
  • 表演媒体
  • 主题目录
  • 衍生类型
  • 函数

🔑 环境变量

变量 描述 示例
OPENAI_API_KEY OpenAI API密钥 sk-...
GROQ_API_KEY Groq API密钥 gsk_...
LANGSMITH_API_KEY LangSmith跟踪API密钥 lsv2_...
LANGSMITH_PROJECT LangSmith项目名称 rdfMCP_tester
OLLAMA_API_URL Ollama服务器URL https://...
OLLAMA_API_KEY Ollama身份验证 Base64编码
LLM_EVAL_PROVIDER 默认LLM提供程序 openai
GRAPH_RECURSION_LIMIT 代理递归深度 25
DOREMUS_MCP_URL MCP服务器端点 https://Doremus.fastmcp.app/mcp
DOREMUS_MCP_TRANSPORT MCP传输协议 streamable_http

🧪 可用的LLM型号

供应商 型号 温度
OpenAI gpt-5.2 0.0
Groq llama-3.3-70b-versatile 0.0
奥拉马 qwen3-coder:30b 0.0

📝 查询示例

  • “查找贝多芬的所有作品”
  • “古典音乐有哪些不同的流派?”
  • “给我看莫扎特交响乐的录音”
  • “探索作品与表演之间的关系”

📦 依赖项

后端

看 pyproject.toml 完整列表:

  • 核心: fastapi, uvicorn, python-dotenv
  • LLM langchain, langchain-openai, langchain-groq, langchain-anthropic, langchain-ollama
  • 图表: langgraph, langsmith, langchain-mcp-adapters
  • 法学硕士: openai, groq, ollama

前端

看 package.json 完整列表:

  • 核心: react@19, react-dom@19
  • 构建: vite@7, autoprefixer, postcss
  • 造型: tailwindcss@3
  • 图标: lucide-react

📚 了解更多

👥 作者

  • 达里奥·戈斯马尔 -dario.gosmar@eurecom.fr
  • 西蒙·法西奥 - simone.fassio@eurecom.fr

📄 许可证

该项目是DOREMUS倡议的一部分。有关许可证信息,请参见项目存储库。


快乐查询! 🎼