使用说明
项目简介
'eval-starter-kit' 是一个AI评估启动工具包,其中包含一个基于Model Context Protocol (MCP) 的服务器实现。该MCP服务器('mcp_server.py')的核心职责是为大型语言模型(LLM)客户端提供标准化的上下文信息和工具,特别是用于会议讲者推荐和查询。它通过暴露RAG(检索增强生成)工具,使LLM能够调用外部功能来检索和推荐最佳讲者,从而增强LLM的应用能力。
主要功能点
- 讲者信息管理: 托管并管理会议讲者数据(从'data/2025-09-02-speaker-bio.csv'文件加载)。
- 智能讲者推荐: LLM客户端可以通过调用MCP服务器提供的'get_best_speaker'工具,根据特定主题查询最相关的讲者。该功能通过RAG(Retrieval-Augmented Generation)技术实现,利用嵌入(embeddings)进行语义匹配。
- 讲者列表查询: 提供'list_all_speakers'工具,允许LLM客户端获取所有可用讲者的名称列表。
- LLM集成: MCP服务器通过JSON-RPC协议与LLM客户端通信,支持工具调用和响应处理,实现LLM与外部功能的无缝交互。
- 多LLM后端支持: RAG服务支持OpenAI、Ollama和AWS Bedrock等多种LLM后端进行文本嵌入生成。
- 会话管理与能力声明: MCP服务器负责管理LLM会话,并向客户端声明其提供的工具能力,例如工具的名称、描述和所需参数。
安装步骤
-
克隆仓库: 打开您的终端或命令行工具,执行以下命令克隆项目仓库:
git clone https://github.com/boscoh/eval-starter-kit cd eval-starter-kit -
安装'uv': (如果您的系统尚未安装 'uv' 包管理器) 'uv' 是一个快速的Python包管理器。运行以下命令进行安装:
curl -LsSf https://astral.sh/uv/install.sh | sh -
安装依赖: 进入项目目录后,使用 'uv' 安装所有必要的Python依赖项并创建虚拟环境:
uv sync -
配置AI服务: MCP服务器的RAG功能需要一个LLM服务后端进行文本嵌入。根据您的需求,选择并配置至少一个LLM服务。以下是几种常见配置方法:
-
Ollama (本地模型): 确保 Ollama 已安装并正在运行。然后,拉取所需的模型(例如 'llama3.2'):
ollama pull llama3.2 ollama serve # 启动Ollama服务器(如果尚未运行) -
OpenAI: 设置 'OPENAI_API_KEY' 环境变量。您可以将其写入项目根目录的 '.env' 文件中:
echo "OPENAI_API_KEY=your-api-key-here" > .env -
AWS Bedrock: 配置您的AWS凭证(通过AWS CLI、配置文件或环境变量)。例如使用AWS CLI:
aws configure或者通过环境变量:
export AWS_ACCESS_KEY_ID=your-access-key export AWS_SECRET_ACCESS_KEY=your-secret-key export AWS_DEFAULT_REGION=us-east-1
-
服务器配置
MCP客户端需要配置MCP服务器的启动命令及其参数才能与MCP服务器建立连接。以下是此MCP服务器的配置信息示例(JSON格式),MCP客户端在连接时会使用这些信息:
{ "server_name": "MCP会议助理服务", "command": "uv", "args": [ "run", "mcp_server.py" ], "env": { "LLM_SERVICE": "openai" // 指定RAG服务使用的LLM后端 (可选值: openai, ollama, bedrock)。此配置需与您已设置的AI服务凭证相符。 }, "description": "提供会议讲者推荐和列表查询的MCP服务。", "tools": [ { "name": "get_best_speaker", "description": "根据主题描述,使用语义搜索查找最相关的会议讲者。例如:'machine learning and AI'", "parameters": { "query": "需要查询的讲者主题描述 (string)" } }, { "name": "list_all_speakers", "description": "获取所有可用会议讲者的名称列表。返回的数据将包含讲者姓名列表。", "parameters": {} // 此工具无需参数 } ] }
- 'server_name': 服务器的易读名称,用于MCP客户端识别服务。
- 'command': 启动MCP服务器的可执行程序或命令。在这里是 'uv'。
- 'args': 传递给 'command' 的参数列表。'run mcp_server.py' 指示 'uv' 运行 'mcp_server.py' 脚本。
- 'env': 启动服务器时可能需要的环境变量。'LLM_SERVICE' 变量非常关键,它指示RAG服务应使用哪个LLM后端进行嵌入生成和LLM交互。
- 'description': 对MCP服务器提供功能的简要说明。
- 'tools': 一个列表,声明了MCP服务器提供的所有工具。每个工具包含其名称、详细描述以及调用时所需的参数结构(遵循JSON Schema格式)。
基本使用方法
-
启动MCP服务器: 在项目根目录,通过以下命令启动MCP服务器。请确保 'LLM_SERVICE' 环境变量设置为您已配置并有权限使用的LLM后端(例如 'openai'、'ollama' 或 'bedrock')。
env LLM_SERVICE=openai uv run mcp_server.py服务器启动后,它将等待MCP客户端的连接和请求。
-
使用MCP客户端进行交互: 该仓库提供了一个示例MCP客户端 'test_mcp_chat.py',它可以自动启动MCP服务器并与之进行交互,演示工具调用功能。
-
运行客户端(默认使用Bedrock作为LLM后端):
env LLM_SERVICE=bedrock uv run test_mcp_chat.py -
运行客户端(使用OpenAI作为LLM后端):
env LLM_SERVICE=openai OPENAI_API_KEY=your-key uv run test_mcp_chat.py
客户端启动后,您可以在终端输入问题,例如“寻找一个关于机器学习的讲者”或“列出所有讲者”。客户端将调用MCP服务器上相应的工具来获取信息,并通过多步推理(如果需要)来提供最终答案。
-
信息
分类
AI与计算