后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载Semantic RoutervLLM-SR是一个开放、可编程的模型与算力决策层它让 Agent Harness 通过稳定的公开模型入口发起调用由可读、可测的路由策略在异构模型池中选出合格路径甚至协调有界的多模型执行。本文基于官方「为何需要语义路由」设计文档展开完整梳理它要解决的五个问题、五项设计目标与「信号 → 投影 → 决策 → 算法 → 模型池」的路由流水线并结合仓库配置与源码说明「先划硬边界、再做优化」的落地方式。读完你将领会 Agent 场景下模型选择与 harness 解耦的关键架构思路以及如何用入口、配方、信号、决策等具名对象组织自己的路由策略。为什么需要语义路由把模型选择从 harness 代码里拿出来Agent Harness 的任务循环、工具执行与持久任务状态都在快速演进但每次推理调用面对的后端世界却充满差异模型在推理能力、延迟、价格、语言、上下文长度、模态、工具支持、位置和安全性上各不相同而模型服务的可用性还会随着升级、扩缩容与故障实时变化。如果每个 harness 集成里都硬编码模型选择逻辑那么任何一次模型池调整都会牵动所有客户端。Semantic Router 的答案是通过策略选择模型而不是在集成中硬编码。共享的路由策略让 harness 在任务中自适应这些差异无需在每个集成里重复实现模型选择逻辑——这是整个项目的第一原则也是 goals.md 开篇的核心主张。它要解决的五个问题1. 模型选择与 harness 耦合Harness 的任务循环与工具在不断演进因此它需要一个稳定的模型契约。公开模型入口的价值在于路由策略和物理模型池可以独立于每个 harness 的集成而变更——harness 永远请求同一个公开模型名背后是哪个物理模型、哪条策略路径由 Router 决定。从源码结构看这一契约由 pkg/routing/engine.go 中的Engine接口承载它面向所有网关模式提供与传输无关的路由核心Plan负责解析入口与配方、执行信号与决策Respond负责在响应侧运行插件。2. 约束和偏好被混在一起不是所有要求都是可优化的目标不可妥协的硬约束授权、隐私、数据驻留、模态、上下文容量、工具兼容性需要优化的目标质量、延迟、成本。一个有用的路由器必须先剔除无效路径再只对剩余候选排序。这个顺序在配置层面体现为决策decision先做资格判定算法algorithm再做选择见下文「路由流水线」。3. 一条路由规则不够用不同检测手段各有盲区关键词能表达硬策略但无法覆盖所有语义意图分类器能识别意图但不应覆盖授权边界运行时指标能选出健康副本却不理解任务。Semantic Router 把这些职责分开成具名对象再组合成一次决策。仓库中 config/fragments 目录即为此而设signal/下维护 30 个信号片段keyword、classifier、domain、embedding、jailbreak、pii、safety、user-feedback 等decision/下是可组合的决策片段algorithm/下是选择与编排算法片段plugin/下是路由行为片段。4. 物理池是动态的路由既是语义问题也是系统问题请求描述工作负载意图、语言、复杂度、上下文、工具、模态、身份模型池贡献容量、健康、延迟与放置。Router 必须把这两种视角连起来而不能让其中任何一种单独成为全部策略。这正对应 signal-driven-decisions.md 中「工作负载、Router 策略、模型池」三视角对照工作负载说明需要什么策略说明允许什么、偏好什么模型池说明当前可用什么。把视角分开系统才更容易变更与评估。5. 有些答案需要协作选一个模型往往就够了另一些任务则受益于升级escalation、校验、并行意见或有界工作流。这些是不同的执行模式应在路由策略中显式声明而不是塞进 harness 的任务循环。外层任务循环与工具执行仍由 harness 负责Router 只在策略边界内协调多次模型调用。五项设计目标vLLM Semantic Router 围绕五个目标设计一个稳定 API覆盖多个后端Harness 使用公开入口如vllm-sr/auto运维人员在背后管理模型池策略可读、可测信号、投影、决策、算法和插件都是具名配置对象而不是散落的条件分支先划硬边界再做优化不合格路由先被剔除质量、延迟、成本或负载才影响选择模型选择与有界协作一条路由可以在已配置的限制内选择一个模型、级联、比较或协调多个模型运维反馈回放、评估、指标和用户反馈支撑有意识的策略变更。目标 3 的实现细节可以直接在源码中看到pkg/decision/selection.go 的decisionResultLess排序逻辑把Tier 视为硬优先级边界Tier不同直接按 tier 排序catch-all 路由永远排在真实匹配之后然后routing.strategy才在「策略排序」与「置信度排序」之间抉择——这正是「资格在前、优化在后」的代码级印证。路由流水线一次请求如何变成执行路径需要路由的模型调用依次经过请求理解、策略和模型执行阶段所选配方定义这些阶段。完整链路如下信号Signals提取事实信号给从请求、对话、身份或内容中检测到的事物命名。有些是确定性的关键词、元数据谓词、上下文长度区间另一些使用嵌入或分类器模型语义意图、领域、复杂度、PII、越狱检测。信号描述事实不选择后端同一信号可被同一配方内的多个决策复用。完整家族清单见 tutorials/signal/overview。投影Projections协调证据投影把若干信号输出变成可复用结果分区partitions在重叠匹配中选出一个连贯胜者分数scores组合加权输入映射mappings把分数转换成具名路由区间。例如领域证据形成互斥领域分区复杂度、上下文与校验证据形成难度分数多个决策随后可直接引用这些结果不必重复组合逻辑。真实配置见 config/config.yaml 中projections段的support_intents分区、request_difficulty加权分数与request_band阈值映射。决策Decisions应用策略决策用布尔规则组合信号和投影输出其优先级与配方的策略决定哪条匹配路由胜出匹配的决策提供候选模型、可选算法与路由局部插件。硬要求必须在这里写清楚授权、仅本地处理、模态、上下文容量和工具兼容性应在优化器比较成本或延迟之前就决定路由是否合格。算法Algorithms选择或协调模型决策匹配后其算法处理候选集选择算法按固定顺序、语义匹配、延迟、反馈或其他有界策略选出一个候选如static、knn、svm、latency-aware等见 config/fragments/algorithm/selectionLooper 算法通过级联、评审组、多轮过程或工作流协调多次调用见 config/fragments/algorithm/looper。当决策只有一个候选时最简单的静态行为往往就是正确选择编排应留给额外延迟与算力已有可度量价值的任务。插件Plugins应用路由特定行为插件为所选路由附加行为按插件不同可能在提供方请求之前、执行期间或处理响应时运行请求参数变更、上下文压缩、检索、记忆、回放、响应缓存、响应控制等。检测与执行是两回事例如 PII 信号只报告一次匹配由决策与插件策略决定是拦截、改路、转换还是仅观察。config/fragments/plugin 维护了 20 个插件片段包括header-mutation/tenant-routing、memory/session-memory、rag/milvus、response-cache/high-recall、router-replay/debug、shadow-dispatch/sampled、tool-selection/filter-request-tools等。模型池执行请求提供方把逻辑模型名绑定到物理推理端点。池中可以包含本地 vLLM 或 Ollama 服务、Kubernetes 托管模型或远程 OpenAI 兼容提供方。Semantic Router 选择模型路径模型服务器或后端调度器执行它并拥有副本放置。模型选择与副本调度是两层独立职责选择算法回答「哪个模型适合这项任务」运行时副本池则回答「该 deployment 的哪个就绪 worker 执行它」——后者属于推理平台。完整请求生命周期system 概览 把上述流水线展开为 8 步Harness 使用 OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages 发送请求Standalone 前端或 ExtProc 网关把请求交给 Router请求的模型解析为入口及其配方Router 提取相关信号并计算投影决策强制约束并选出合格候选集路由的算法选择一个模型或执行有界的多模型策略路由插件在已配置的请求、执行或响应钩子处运行上游客户端或外部网关把提供方形态的请求发送到所选后端并返回规范化响应。核心对象与配置模型system 概览 给出了核心对象表对象用途入口Entrypoint把一个或多个公开模型别名映射到配方。配方Recipe完整的路由策略与运行时状态隔离边界。信号Signal关于请求、身份、对话或内容的具名事实。投影Projection由信号导出的可复用分数、分区或区间。决策Decision选择合格路由和候选集的策略规则。插件Plugin路由特定处理例如请求控制、记忆、检索或响应处理。算法Algorithm用于选择或协调候选模型的方法。提供方模型Provider Model可供一个或多个配方使用的物理推理端点。这组对象的组合方式可以概括为一条解析链请求模型名 - 入口 - 配方 - 决策 - 算法 - 后端见 虚拟模型文档。检测可以跨策略复用策略可以独立于模型选择而变更物理池可以在稳定的公开入口背后演进。仓库中的 Agent 路由配方 config/recipes/agent/config.yaml 展示了最简入口声明entrypoints: - model_names: [vllm-sr/auto] recipe: default而 config/config.yaml 是完整的单文件示例listeners定义 HTTP/HTTPS 监听器与 TLS、providers.models定义带pricing、reliability、backend_refs权重的物理模型routing.signals定义关键词、embedding、domain、safety、jailbreak、pii、structure、complexity 等信号projections定义分区与加权分数decisions定义优先级、规则、modelRefs、candidateIterations、algorithm与pluginsshadow_dispatch、system_prompt、response_cache、context_compression、tools 等。先划硬边界再做优化资格与排序的分离「先划硬边界再做优化」不是一句口号它在决策引擎的排序实现中非常具体。从 pkg/decision/selection.go 可以读出完整的优先级层次Tier 是硬优先级边界不同 tier 的决策直接按 tier 排序不参与跨层比较catch-all 永远排在真实匹配之后同层内才按routing.strategy如priority结合决策priority排序只有在置信度可比较同类分数、同种度量时置信度才参与排序——分类器概率与向量相似度是不同量纲不能直接比较这一点在comparableConfidencePools中会被显式判定并记入 ranking trace。换句话说授权、本地性、模态、上下文、工具兼容性等硬约束先把不合格路径剔除之后成本、延迟、质量或置信度才开始影响选择。这也解释了为什么文档强调「有些要求不可妥协……有用的路由器会先剔除无效路径再只对剩余候选排序」。模型选择与有界协作单模型之外的执行模式不是所有答案都来自单个模型。在策略中显式声明的协作模式包括升级escalation低置信度或复杂请求升级到更强模型级联cascade先跑快速阶段只有接受条件不满足才继续评审组 / 并行意见panel / fusion多个模型给出意见再综合有界工作流bounded workflow在调用次数与 deadline 预算内协调多个模型。Looper 算法家族config/fragments/algorithm/looper实现了置信度、融合、评审、remom 与工作流等模式而 bench/looper_tts 提供了对应合约与证据完整性测试。关键约束是「在已配置的限制内」每次额外调用都必须有可度量的价值编排不能无限蔓延外层任务循环与工具执行始终留在 harness 一侧。运维反馈策略变更要有证据第五个设计目标是运维反馈对应能力包括回放replayrouter-replay插件记录路由结果供审计与策略改进见 config/fragments/plugin/router-replay/debug.yaml评估仓库 bench 目录提供 agent_crew、grounded_fusion、hallucination、reasoning、redteam、router_flow 等基准模块配方还带probes.yaml探针可在不调用推理后端的情况下验证路由与插件选择见 config/recipes/README.md 与 配方一致性指南指标路由结果通过x-vsr-selected-recipe、x-vsr-selected-model等响应头与观测接口暴露见 接入 Agent Harness 与 vsr-headers用户反馈user-feedback与reask信号把不满意、重复提问等事实喂给策略。Semantic Router 不是什么明确边界与明确能力同样重要它不是 Agent harness任务编排、工具执行与持久任务状态由 harness 负责Router 只为其中的模型调用提供决策它不是 Chat 后端回答生成由 vLLM、Ollama 或托管提供方负责内置模型运行时负责判断、分类、embedding 等任务它不只是负载均衡器副本健康很重要但请求含义与策略决定哪个模型池有资格它不是通用质量保证路由质量取决于已配置的模型、信号、策略与评估数据它不替代网络、身份或数据治理控制它在更广的安全架构内执行路由策略。使用场景一瞥同一套策略四种环境使用场景文档 将部署环境归纳为四类它们并不互斥环境典型问题Semantic Router 决定什么仍在 Router 之外的部分云多个提供方 API 在能力、成本、延迟和可用性上不同哪个已批准的提供方或虚拟目标应处理请求提供方容量、计费、区域服务健康和账户策略数据中心共享加速器机群服务具有不同优势和资源画像的模型哪个模型池符合任务、策略和请求目标副本放置、批处理、自动扩缩容和设备调度边缘容量有限数据可能需要留在本地或离线工作本地路径是否具备能力以及是否允许远程升级设备运行时、模型打包、功耗限制和网络可用性企业混合工作负载跨越租户、区域、信任域及内外提供方在身份、驻留、能力和路由策略下哪些路径合格身份签发、网络控制、密钥管理和数据治理跨环境还反复出现五类模式能力路由先剔除不满足模态/上下文/工具/语言的模型再比成本延迟、专项路由把代码、数学、研究、领域工作导向合适池、基于目标的虚拟模型暴露fast/accurate/balanced等稳定名称、有界恢复与编排仅在额外调用有可度量价值时升级或比较、策略优先路由先应用授权与能力约束再排序优化。从理念到实践快速上手路径如果你想在真实 harness 中体验这套决策层官方推荐路径是阅读 接入 Agent Harness把推理地址指向公开监听器本地快速开始为http://localhost:8899公开模型 ID 默认使用vllm-sr/auto从仓库配方起步先读 配方 Model Card启动所需后端再校验并运行vllm-sr config validate --config config/recipes/name/config.yaml vllm-sr serve --config config/recipes/name/config.yaml用最小请求验证路由并检查回执头curl -sS -i http://localhost:8899/v1/chat/completions \ -H Content-Type: application/json \ -d { model: vllm-sr/auto, messages: [{role: user, content: Hello!}] }关注响应中的x-vsr-selected-recipe与x-vsr-selected-modelHTTP 成功不代表输出有效或路由正确。运行真实任务前请先为 harness 配置上下文窗口与输出上限预算从配方可选的全体模型取最小值并在变更生产策略前用探针验证代表性请求。结语Semantic Router 的定位一句话可以概括把「选哪个模型」从每次集成的硬编码中拿出来变成一份可读、可测、可演进的策略。五个设计目标——稳定 API、可读可测策略、先边界后优化、有界协作、运维反馈——层层支撑起这个定位而「信号描述事实、决策划定资格、算法优化排序、插件施加行为、配方隔离状态」的流水线则是它落地为代码的具体形态。对于正在构建或维护 Agent 系统的工程师这套「公共入口 隔离配方 分层流水线」的架构模板本身就是一个值得借鉴的模型选择方案。赞分享后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载相关推荐vLLM Semantic Router 入门为你的 Agent 构建可编程的模型与算力决策层vLLM Semantic Router 入门为你的 Agent 构建可编程的模型与算力决策层 vLLM Semantic Router下文简称 vLLM后端API网关模型推理服务AI Agentsemantic-router 插件机制实战指南在决策命中后为路由挂载可编程行为semantic router 插件机制实战指南在决策命中后为路由挂载可编程行为 本文围绕 semantic router 的 Plugins插件机制展开后端API网关模型推理服务AI Agent基于 vLLM Semantic Router 的开放可编程决策层入门指南基于 vLLM Semantic Router 的开放可编程决策层入门指南 vLLM Semantic Router项目文档中简称 vLLM SR是一个面向后端API网关模型推理服务AI Agent上一篇内存故障诊断与系统稳定性保障Memtest86全维度技术指南下一篇ProxyPool完全指南从安装到部署的简单步骤新手也能轻松上手创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?