基于 MCP 的路由 (MCP Based Routing)
本指南向您展示如何使用模型上下文协议 (Model Context Protocol, MCP) 实现自定义分类逻辑。MCP 路由允许您集成外部服务、LLM 或自定义业务逻辑来进行分类决策,同时保持数据私密且路由逻辑可扩展。
关键优势
- 基准/高准确度:使用强大的 LLM(GPT-4, Claude)进行带有上下文学习 (In-context Learning) 的分类
- 可扩展性:轻松集成自定义分类逻辑,无需修改路由代码
- 隐私性:将分类逻辑和数据保留在您自己的基础设施中
- 灵活性:将 LLM 推理与业务规则、用户上下文和外部数据相结合
它解决了什么问题?
内置分类器受限于预定义模型和逻辑。MCP 路由实现了:
- LLM 驱动的分类:使用 GPT-4/Claude 进行复杂、细微的分类
- 上下文学习:提供示例和上下文以提高分类准确性
- 自定义业务逻辑:根据用户层级、时间、地点、历史记录实施路由规则
- 外部数据集成:在分类过程中查询数据库、API、特性标志 (Feature Flags)
- 快速实验:无需重新部署路由即可更新分类逻辑
何时使用
- 高准确度要求:LLM 分类优于 BERT/嵌入模型的场景
- 复杂领域:需要超出关键词/嵌入匹配的细微理解
- 自定义业 务规则(用户层级、A/B 测试、基于时间的路由)
- 私密/敏感数据:分类过程必须保留在您的基础设施中
- 快速迭代:无需更改代码即可更新分类逻辑
配置
在您的 config.yaml 中配置 MCP 分类器:
classifier:
# 禁用内置分类器
category_model:
model_id: ""
# 启用 MCP 分类器
mcp_category_model:
enabled: true
transport_type: "http"
url: "http://localhost:8090/mcp"
threshold: 0.6
timeout_seconds: 30
# tool_name: "classify_text" # 可选:如果未指定则自动发现
categories: [] # 类别从 MCP 服务器加载
default_model: openai/gpt-oss-20b
vllm_endpoints:
- name: endpoint1
address: 127.0.0.1
port: 8000
weight: 1
model_config:
openai/gpt-oss-20b:
reasoning_family: gpt-oss
preferred_endpoints: [endpoint1]
工作原理
- 启动:路由连接到 MCP 服务器并调用
list_categories工具 - 类别加载:MCP 返回类别、系统提示词和描述
- 分类:对于每个请求,路由调用
classify_text工具 - 路由:MCP 响应包含类别、模型和推理设置
MCP 响应格式
list_categories:
{
"categories": ["math", "science", "technology"],
"category_system_prompts": {
"math": "你是一位数学专家...",
"science": "你是一位科学专家..."
},
"category_descriptions": {
"math": "数学和计算查询",
"science": "科学概念和查询"
}
}
classify_text:
{
"class": 3,
"confidence": 0.85,
"model": "openai/gpt-oss-20b",
"use_reasoning": true
}
MCP 服务器示例
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class ClassifyRequest(BaseModel):
text: str
@app.post("/mcp/list_categories")
def list_categories():
return {
"categories": ["math", "science", "general"],
"category_system_prompts": {
"math": "你是一位数学专家。",
"science": "你是一位科学专家。",
"general": "你是一位乐于助人的助手。"
}
}
@app.post("/mcp/classify_text")
def classify_text(request: ClassifyRequest):
# 自定义分类逻辑
if "equation" in request.text or "solve" in request.text:
return {
"class": 0, # math
"confidence": 0.9,
"model": "openai/gpt-oss-20b",
"use_reasoning": True
}
return {
"class": 2, # general
"confidence": 0.7,
"model": "openai/gpt-oss-20b",
"use_reasoning": False
}
请求示例
# 数学查询(MCP 决定路由)
curl -X POST http://localhost:8801/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MoM",
"messages": [{"role": "user", "content": "解方程:2x + 5 = 15"}]
}'
效益
- 自定义逻辑:实施特定领域的分类规则
- 动态路由:MCP 为每个查询决定模型和推理设置
- 集中控制:在外部服务中管理路由逻辑
- 可扩展性:分类能力可独立于路由进行扩展
- 集成:连接到现有的机器学习基础设施
真实世界用例
1. 复杂领域分类(高准确度)
问题:细微的法律/医疗查询需要比 BERT/嵌入模型更好的准确度 解决方案:MCP 使用带有上下文示例的 GPT-4 进行分类 影响:准确度达 98%(BERT 约 85%),成为质量比较的基准