后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载导读本文是 semantic-router 算法层algorithm/的完整技术指南。算法层解决路由决策已匹配、但modelRefs暴露多个候选模型之后如何有原则地选择或协调它们这一核心问题。读完本文你将掌握算法在路由管线中的准确位置、决策内嵌的algorithm配置块的完整写法与字段语义、全部选择类与循环类算法的目录与差异化选型、以及minimum_candidates、能力过滤、fail-closed 等生产级边界行为并拿到对应的仓库配置片段与 Go 源码实现证据可直接落地到自己的路由配置中。算法层在路由管线中的定位根据 算法概览文档算法Algorithm在一条决策decision已匹配之后运行它只做三件事之一从该决策的modelRefs中选出一个模型选择类算法通过Looper协调多个 Chat 模型循环类算法会发起额外的模型调用执行native System One级联cascade原生执行路径。算法不决定路由资格——资格判断由上游的信号signal与决策decision先完成。算法层只负责资格已定之后的选择与编排这保证了路由资格与模型选择策略分离。从 algorithm_registry.go 的源码结构可以印证这一分层决策算法的 payload 挂在AlgorithmConfig.Extensions下以类型名命名的 block 中注册时强制要求其 block 以类型命名、且作为 selector 运行ConfigField Type、Execution AlgorithmExecutionSelector这与 YAML 中algorithm.type 同名配置块的结构一一对应。主要优势资格与选择分离路由资格signal/decision与模型选择algorithm是两个独立层次可独立演进。一条决策保留多个候选modelRefs可列出多个模型无需把排序逻辑内联进决策规则。单模型排序与多模型编排通吃既支持纯选择返回一个模型也支持 Looper 的多模型协调与 System One 级联。策略逐决策可审查每条决策的选择/编排策略都在自身algorithm块内显式可见、可复用。与仓库片段树一致每种算法在config/fragments/algorithm/selection/与config/fragments/algorithm/looper/下有对应的 YAML 片段与一页教程配置与文档同源。解决什么问题何时使用问题路由匹配后仍可能在多个合法候选模型之间没有原则地选择。没有算法层时团队要么硬编码胜者要么在各路由间重复排序逻辑。何时使用algorithm/modelRefs含多个候选路由策略依赖延迟、反馈、语义契合或在线探索一条决策应编排多个模型而非只选一个希望模型选择演进而不改动决策规则本身。需要说明的是若一条决策只有单个候选通常无需配置算法除非所选 Looper 支持且需要单模型执行计划。配置基础决策内嵌的 algorithm 块算法是**决策局部decision-local**的位于每条已匹配决策的algorithm字段下。以下为 算法概览文档 中的规范 v0.3 配置示例语义匹配选型routing: decisions: - name: computer-science-reasoning rules: operator: AND conditions: - type: domain name: computer science modelRefs: - model: qwen2.5:7b - model: qwen3:14b algorithm: type: router_dc router_dc: temperature: 0.07英文源文档的另一个示例则展示了latency_aware与minimum_candidates的用法routing: decisions: - name: responsive-route description: Prefer the model with the best observed latency. priority: 100 rules: operator: AND conditions: [] modelRefs: - model: small-model - model: large-model algorithm: type: latency_aware minimum_candidates: 2 latency_aware: tpot_percentile: 90 ttft_percentile: 95minimum_candidates候选池下限约束minimum_candidates是多种算法共用的公共字段作用贯穿配置期与请求期两个阶段详见 算法概览英文源文档配置期一个 model-free Recipe 可在任何 Model 绑定之前声明该值一旦 Entrypoint 将 Recipe 实体化校验便要求存在这么多个不同的modelRefs请求期请求到来后经过上下文资格过滤得到幸存候选池会再次检查同一边界确保 panel、cascade 或 selector 不会在候选池小于策略声明值时静默运行。该行为在 algorithm_minimum_candidates_test.go 有对应的 DSL 校验测试支撑。配置校验完整配置可用 CLI 校验vllm-sr config validate --config config.yaml选择类算法Selection Algorithms选择类算法只返回一个候选模型。对于完整推理请求Router 会在打分之前先按以下维度过滤候选再交给算法在幸存池内比较上下文Router 保留的对话内容过滤精确候选引用后端线缆wire协议支持能力声明在模型卡上的任务能力task capabilities。能力检查会预览该决策的请求参数与 no-tools 插件策略但不会重复执行这些插件无标注的模型仅保留线缆级兼容检查。硬性质量/SLO 约束仍然生效Router Learning 在考虑追加候选时也会核对相同能力。空候选池或违反minimum_candidates时一律 fail-closed关闭失败Dispatch 在插件变更后还会对最终请求做二次校验若出现迟到的能力不匹配直接返回错误而不会重启决策评估、重新打分或静默换选。显式 pin 的模型同样经过最终校验但不会被其他模型替换。支持的算法一览Type状态目标主要依赖decisionsupported就匹配候选提出一个类型化选择题支持 Choice 的 Decision 部署staticsupported使用声明顺序或固定领域分数无randomsupported在合格声明候选中均匀选取无router_dcsupported将请求语义匹配到模型描述Embedding 运行时与可用的模型卡latency_awaresupported偏好观测 TTFT/TPOT 最优的候选进程内延迟观测multi_factorsupported权衡质量、延迟、成本与负载可选 SLO 过滤模型元数据与本地实时指标hybridsupported混合多个选择器分数各组件选择器输入以下逐个给出配置片段全部来自config/fragments/algorithm/selection/。decisionDecision 模型选择由专用的 Decision 模型如 Decision-2.0-Kai-0.6B就候选提问返回类型化选择。完整示例见 decision.yamlglobal: model_catalog: deployments: decision-kai: provider: model_runtime artifact: vllm-sr/Decision-2.0-Kai-0.6B revision: cd49ea3813fd8ba0928a9a23ef6c9a0f2f0cd764 routing: decisions: - name: decision-model-route description: Ask a decision model which candidate should answer. priority: 100 rules: operator: AND conditions: [] modelRefs: - model: qwen3-8b use_reasoning: false - model: qwen3-32b use_reasoning: true algorithm: type: decision decision: deployment: decision-kai instructions: Which model should answer this request? candidates: qwen3-8b: Fast general model for routine requests qwen3-32b: Strong reasoning model for hard requests timeout_ms: 1000教程见 selection/decision.md。static静态排序按modelRefs声明顺序或固定领域分数选取无任何运行时依赖algorithm: type: static minimum_candidates: 1教程见 selection/static.md。random随机选择在合格候选中均匀随机选取algorithm: type: random minimum_candidates: 2教程见 selection/random.md。router_dc语义匹配选择器router_dc将请求与每个模型描述分别做 embedding再选取语义相似度最高的候选对应 router-dc.yamlalgorithm: type: router_dc router_dc: temperature: 0.2 dimension_size: 384 min_similarity: 0.7 use_query_contrastive: true原理源自 arXiv:2409.19886 Query-Based Router by Dual Contrastive Learning源码注释可见请求路径不训练双编码器而是对请求与模型描述使用同一个 embedding 函数查询 embedding用户请求经配置的 embedding 提供方编码为稠密向量模型 embedding每个模型由其描述以及可选的 capability 标签编码得到向量相似度计算余弦相似度除以temperature后经 sigmoid 归一s_i sigmoid(cos(q, m_i) / τ)选择取高于min_similarity的最高分者再对返回的分数图做一次 temperature 缩放的 softmax。其中τ即temperature默认 0.07。模型 embedding 初始化模型必须在routing.modelCards中配置描述router-dc.mdrouting: modelCards: - name: llama-3.2-1b description: Fast small model for simple tasks, low cost capabilities: [summarization, simple_qa] - name: codellama-7b description: Code generation specialist, good at programming tasks capabilities: [code_generation, debugging]当use_capabilities: true时capability 标签会与描述拼接以丰富 embedding 文本。从 router_dc.go 源码可见完整配置结构其默认值为temperature: 0.07、dimension_size: 768、min_similarity: 0.3、use_query_contrastive: true、use_model_contrastive: true、require_descriptions: false、use_capabilities: trueDefaultRouterDCConfig。参数表含默认值参数类型默认值说明temperaturefloat0.07softmax 温度越低选择越尖锐/越贪心dimension_sizeint768兼容性字段当前选择器直接使用 embedding 函数返回的向量min_similarityfloat0.3有效匹配的最低相似度阈值0–1use_query_contrastivebooltrue兼容性字段不启用请求期训练use_model_contrastivebooltrue兼容性字段不启用请求期训练require_descriptionsboolfalse若为 true任何模型缺少描述即校验失败use_capabilitiesbooltrue将 capability 标签纳入 embedding 文本已知限制依赖模型描述缺描述会劣化匹配质量冷门查询可能与任何模型 embedding 匹配不佳对温度敏感极低温度近贪心、极高温度近均匀。此外请求文本会经过配置的 embedding 运行时——使用远程 embedding 提供方时文本会跨越提供方边界需与模型卡描述、阈值一起评估。Router Learning 的 outcome 端点POST /api/v1/observability/outcomes携带响应中的x-vsr-replay-id可记录回放关联反馈用于离线分析但不改变请求期相似度分数。latency_aware延迟感知选择按观测到的 TTFT/TPOT 百分位对合格候选排序选择相对延迟分数最低者对应 latency-aware.yamlalgorithm: type: latency_aware latency_aware: tpot_percentile: 90 ttft_percentile: 95原理对每个候选模型从指标存储取 TPOT/TTFT 在配置百分位上的观测值。对每个启用的指标将候选的百分位值除以候选集中数据完整者的最佳值再对各比值取平均score(m) mean over x in M of x(m) / min_j x(j)其中M为配置的 TTFT 与/或 TPOT 测量集合。分数越低越好——这是相对排名而非 SLO 上限。选择分数最低者返回。参数表参数类型默认值说明tpot_percentileint未设置0比较的 TPOT 百分位1–100ttft_percentileint未设置0比较的 TTFT 百分位1–100descriptionstring—延迟策略的可读描述至少配置一个百分位两者并用可同时考虑生成速度与首字延迟。对应实现见 latency_aware.goLatencyAwareSelector基于 TPOT/TTFT 百分位统计。已知限制纯延迟驱动可能选中更快但质量更低者新模型无历史数据会被跳过无法考虑查询复杂度使用聚合百分位。延迟观测由各 Router 进程本地持有副本间可能做出不同选择新启动进程缺数据时回退到首个候选该选择器不强制延迟上限、也不考虑质量与价格——需要显式延迟上限时请改用multi_factor。完整示例见 config/fragments/algorithm/selection/latency-aware.yaml。multi_factor多因素权衡在质量、延迟、成本、负载间加权权衡可选 SLO 过滤对应 multi-factor.yamlalgorithm: type: multi_factor minimum_candidates: 2 multi_factor: objective: strategy: weighted quality: index: vllm-sr/coding1.0.0 on_missing: exclude min_coverage: 1.0 min_score: 0.0 weights: quality: 0.4 latency: 0.2 cost: 0.2 load: 0.2 slo: max_tpot_ms: 200 max_ttft_ms: 800 max_cost_per_1m: 5.0 max_inflight: 50 latency_percentile: 95 on_no_candidates: cheapest其实现覆盖于 multi_factor.go 及配套的目标函数与 SLO 测试如multi_factor_latency_test.go、multi_factor_survivors_test.go。hybrid混合加权将多种选择信号合成为单一加权分数对应 hybrid.yamlalgorithm: type: hybrid hybrid: experience_weight: 0.4 router_dc_weight: 0.4 automix_weight: 0.2 cost_weight: 0.1权重显式、易审计支持在旧选择器与新选择器之间加权过渡v0.3 中文教程 hybrid.md 中为elo_weight当前仓库片段以experience_weight为准。实验性选择算法以下算法官方标记为experimental应先在自身流量上验证再用于生产路由automixautomix.yaml在核验质量、升级深度与成本间权衡支持有界升级algorithm: type: automix automix: verification_threshold: 0.78 max_escalations: 2 cost_aware_routing: truepromptprompt.yaml让有界的 helper 模型从声明候选中选择需要 OpenAI 兼容的 helper 模型routing: decisions: - name: prompt-selected-route description: Select a candidate with a concrete helper model. priority: 100 rules: operator: AND conditions: [] modelRefs: - model: qwen3-8b use_reasoning: false - model: qwen3-32b use_reasoning: true algorithm: type: prompt prompt: model: qwen3-8b instructions: - Choose qwen3-8b for ordinary requests and qwen3-32b for hard reasoning, coding, or multi-step analysis. timeout_seconds: 5knn / kmeans / svm / mlp基于训练产物与 embedding 的学习型选择器配置最简各自片段仅声明type# knn跟随相似标注样本 algorithm: type: knn# kmeans按学习到的流量簇路由 algorithm: type: kmeans# svm应用学习到的决策边界 algorithm: type: svm# mlp应用学习到的非线性分类器 algorithm: type: mlp学习型选择器需要为运行时相同的 embedding 维度与候选标签所训练的人工产物artifact否则无法加载。对应英文教程knn、kmeans、svm、mlp、automix、prompt。已退役算法说明v0.3 中文教程 overview.md 中列出的Elo、GMT Router、RL Driven属于历史教程。从源码注册表 algorithm_registry.go 可以确认policy、session_aware、elo、rl_driven、gmtrouter、bandit、personalization、thompson、router_r1等类型被列为退役类型retiredAlgorithmTypesRouter 会拒绝再次注册它们。当前以英文主文档 算法库存表 中的类型为准。循环类算法Looper Algorithms循环类算法会发起额外的模型调用Router 在进程内完成每次调用调用运行已匹配决策的插件并经由被调用模型的providers.models[].backend_refs指向后端因此每个被 Looper 调用的模型都必须配置 backend。额外调用会增加延迟与 token 消耗且中间内容会发送给运行中涉及的每个 worker。global.integrations.looper.endpoint已被弃用并忽略Looper 调用不再回环穿过网关应移除该字段或运行vllm-sr config migrate。Type状态目标confidencesupported逐级升级直到置信度越过阈值ratingssupported以有界并发从每个候选返回一个选择remomsupported多轮探索多条推理路径后合成fusionexperimental运行分析 panel 与 judge/合成阶段workflowsexperimental执行有界静态或 planner 生成的 worker 流程confidence置信度升级在候选模型间逐级升级小到大直到置信度足够高即停止algorithm: type: confidence minimum_candidates: 2 confidence: confidence_method: hybrid threshold: 0.72 escalation_order: small_to_large on_error: skip实现在 looper/confidence.go并配有自校验self-verification与 entailment 测试。ratings有界并发评分在复用路由级评分信号的同时协调多个候选并发有硬上限algorithm: type: ratings ratings: max_concurrent: 3 on_error: skip实现在 looper/ratings.go。remom多轮推理编排按广度调度模式协调多个候选模型中间响应行为显式algorithm: type: remom remom: breadth_schedule: [3, 2] model_distribution: round_robin temperature: 0.7 max_concurrent: 3 max_completion_tokens: 1024 round_timeout_seconds: 120 min_successful_responses: 2 include_intermediate_responses: false on_error: skip实现在 looper/remom.go 及配套的remom_distribution.go、remom_compaction.go。fusion分析 panel 合成运行分析 panel 与 judge/合成阶段属于实验特性algorithm: type: fusion minimum_candidates: 2 fusion: model: qwen3-32b analysis_models: - qwen3-8b - qwen3-32b analysis_mode: separate max_concurrent: 2 max_completion_tokens: 512 round_timeout_seconds: 90 min_successful_responses: 1 temperature: 0.2 include_analysis: true include_intermediate_responses: true on_error: skip quorum_failure_policy: fail judge_prompt_version: fusion-v1其中quorum_failure_policyfail或fallback是 panel 级策略决定可用响应低于min_successful_responses时是返回类型化错误还是路由到quorum_fallback_target它独立于on_error后者只治理单次失败的 panel 尝试且为 Recipe 所有、请求不可覆盖。实现见 looper/fusion.go 及fusion_quorum_*系列。workflowsRouter Flow执行有界静态或 planner 生成的 worker 流程属于实验特性algorithm: type: workflows minimum_candidates: 2 workflows: mode: dynamic planner: model: qwen-coordinator max_completion_tokens: 2048 max_steps: 6 max_parallel: 3 round_timeout_seconds: 90 min_successful_responses: 2 include_intermediate_responses: true on_error: skip实现见 looper/workflows.go 与workflows_planner.go、workflows_state_store.go等配套文件。使用循环类算法前务必确认隐私边界Looper 算法会与配置的 worker 共享请求内容请在选用前完成隐私与提供方边界决策。原生 System One 算法Native Cascade以api: systemone发布的 Recipe 走原生执行路径匹配的决策运行一个cascade保留完整的类型化响应每个 cascade 有自己的algorithm.budget覆盖各阶段与传输重试信号先运行并持有各自的超时与请求取消。Type状态目标cascadeexperimental按作者顺序尝试声明的原生模型直到验收通过示例见 cascade.yamlrecipes: - name: native-cascade routing: decisions: - name: kai-to-vega rules: {} modelRefs: [{model: kai}, {model: vega}] algorithm: type: cascade budget: {deadline: 3s, max_calls: 2} quality: type: uncalibrated acceptance: rules: - {question_type: choice, field: top_probability, predicate: {gte: 0}} - {question_type: score, field: top_probability, predicate: {gte: 0}} - {question_type: noul, field: top_probability, predicate: {gte: 0}} stages: - name: fast kind: native model: kai accept: rules: - {question_type: choice, field: top_probability, predicate: {gte: 0.6059704079536342}} - {question_type: score, field: top_probability, predicate: {gte: 0.6059704079536342}} - {question_type: noul, field: top_probability, predicate: {gte: 0.6059704079536342}} - {name: upgrade, kind: native, model: vega}单阶段 cascade 可只针对一个模型更长 cascade 可先试小模型再上强模型一条 Recipe 内多个决策可选择不同 cascade。原生执行使用显式候选名册与质量契约不运行 Chat 插件、也不会静默回退到 Chat 模型。教程见 native/cascade.md。操作边界与生产实践Operational Boundaries候选引用完整性算法接受重复模型引用时候选包含其LoRA 与推理控制如 reasoning不只是模型名打分、合成与 dispatch 都保留精确的获胜引用。遗留的仅模型名结果若匹配到多个不同候选会被拒绝而非解析为第一个引用。对 LoRA 候选服务前端按所选基础模型路由而 provider 请求指名 adapter。Router Learning 会话记忆会话记忆保留所选候选的控制信息保护protection机制可在工具循环延续中维持精确选择即使后续基础选择偏好同模型的另一 effort。若该精确持有者在活动工具循环或不可移植延续中被排除路由拒绝请求而非恢复持有者或回退到不同 effort可移植轮次可另选新合格候选observe 与 bypass 模式不强制执行保护决策。名称解析候选模型名必须在完整配置中经routing.modelCards与providers.models解析。学习型选择器需要为运行时相同 embedding 维度与候选标签训练的产物。观测局部性延迟与负载观测是 Router 进程本地的不是集群级调度器。隐私Looper 算法与配置的 worker 共享请求内容先做隐私与提供方边界决策。上下文窗口Looper 生成的 planner/worker/verifier/judge/合成提示在 dispatch 前会对照每个目标 Model 的已知上下文窗口检查缺失上下文元数据仍视为可兼容。配置验证始终用vllm-sr config validate --config config.yaml校验完整配置。源码级实现印证注册机制与退役列表algorithm_registry.go 定义了RegisterDecisionAlgorithm与DecodeDecisionAlgorithm——算法 payload 在AlgorithmConfig.Extensions下以类型名命名解码后先填默认值再校验retiredAlgorithmTypes明确列出禁止再注册的历史类型。Router DC 实现router_dc.go 的RouterDCSelector通过注入的 embedding 函数为请求与模型描述计算向量InitializeModelEmbeddings/InitializeFromConfig将 capability 标签并入描述文本任何模型 embedding 失败仅告警跳过。延迟选择实现latency_aware.go 的LatencyAwareSelector完全基于pkg/latency的 TPOT/TTFT 百分位统计无内部模型状态。Looper 包src/semantic-router/pkg/looper 下confidence.go、ratings.go、remom.go、fusion.go、workflows.go与大量测试含 quorum、预算、状态存储一一对应上文各循环算法。测试佐证algorithm_minimum_candidates_test.goDSL 层面候选下限校验、router_dc_test.go、latency_aware_test.go、fusion_quorum_*_test.go等覆盖了各算法的关键行为。小结semantic-router 的算法层把决策匹配后如何在候选模型中做有原则的选择或编排变成了一条决策内的显式、可审查、可复用策略选择类算法覆盖静态/随机/语义/延迟/多因素/混合/学习型选型循环类算法覆盖置信度升级、有界并发评分、多轮推理合成、分析融合与流程编排System One 级联则提供原生类型化执行路径。配合minimum_candidates双层校验、候选能力过滤与 fail-closed 语义算法层保证了多候选路由既不牺牲资格判断的清晰性也不会在候选池萎缩时静默降级。赞分享后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载相关推荐semantic-router 的 decision 选择算法让决策模型为每条请求挑选最合适的模型semantic router 的 decision 选择算法让决策模型为每条请求挑选最合适的模型 导读 decision 是 vLLM semantic r后端API网关模型推理服务AI Agentsemantic-router 的 SVM 模型选择算法原理、配置与训练实战指南semantic router 的 SVM 模型选择算法原理、配置与训练实战指南 本文以 website/docs/tutorials/algorithm/s后端API网关模型推理服务AI Agentsemantic-router 的 Router Flow Workflows一个模型名背后的有界多模型工作流编排semantic router 的 Router Flow Workflows一个模型名背后的有界多模型工作流编排 导读 Router Flow 是 sema后端API网关模型推理服务AI Agent上一篇免费 Windows Syslog ServerVisual Syslog Server 四步集中收集网络设备日志下一篇免费用 Diablo Edit2 修改暗黑2存档的完整步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考