Router API 参考
Semantic Router 提供了一个基于 gRPC 的 API,可与 Envoy 的外部处理 (ExtProc) 协议无缝集成。本文档涵盖了 API endpoint、请求/响应格式和集成模式。
API 概览
Semantic Router 作为一个 ExtProc 服务器运行,通过 Envoy 代理处理 HTTP 请求。它不直接公开 REST endpoint,而是处理通过 Envoy 路由的 OpenAI 兼容的 API 请求。
注意:除了 ExtProc 路径外,该项目还在 8080 端口启动了一个轻量级的 HTTP Classification API,用于健康/信息和分类工具。OpenAI 兼容的
/v1/models端点由该 HTTP API (8080) 提供,并可以通过路由规则在 Envoy (8801) 上有选择地公开。
端口和端点映射
-
8801 (HTTP, Envoy 公共入口)
- 典型的客户端入口,用于 OpenAI 兼容的请求,如
POST /v1/chat/completions。 - 如果添加了 Envoy 路由,可以将
GET /v1/models代理到 Router 8080;否则 8801 的/v1/models可能会返回 "no healthy upstream"。
- 典型的客户端入口,用于 OpenAI 兼容的请求,如
-
8080 (HTTP, Classification API)
GET /v1/models→ OpenAI 兼容的模型列表(包含合成的MoM)GET /health→ Classification API 健康状况GET /info/models→ 已加载的分类器模型 + 系统信息GET /info/classifier→ 分类器配置详情POST /api/v1/classify/intent|pii|security|batch→ 直接分类工具
-
50051 (gRPC, ExtProc)
- Envoy 外部处理 (ExtProc),用于
/v1/chat/completions的路径内分类/路由。 - 不是 HTTP 端口;无法直接通过 curl 访问。
- Envoy 外部处理 (ExtProc),用于
-
9190 (HTTP, Prometheus 指标)
GET /metrics→ Prometheus 抓取端点(全局进程指标)。
请求流程
OpenAI API 兼容性
路由处理标准的 OpenAI API 请求:
模型端点 (Models Endpoint)
列出可用模型,并包含一个合成的 "MoM" (Mixture of Models) 模型,该模型使用 Router 的 intent classification 来为每个请求选择最佳的基础模型。
- 端点:
GET /v1/models - 响应:
{
"object": "list",
"data": [
{ "id": "MoM", "object": "model", "created": 1726890000, "owned_by": "semantic-router" },
{ "id": "gpt-4o-mini", "object": "model", "created": 1726890000, "owned_by": "upstream-endpoint" },
{ "id": "llama-3.1-8b-instruct", "object": "model", "created": 1726890000, "owned_by": "upstream-endpoint" }
]
}
注意:
- 具体的模型列表来源于您在
config.yaml中配置的 vLLM 端点(见vllm_endpoints[].models)。 - 特殊的
MoM(Mixture of Models) 模型始终存在,并指示 Router 自动分类并路由到最佳后端模型。为了向后兼容,模型名称auto也被接受为别名。