后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载导读本篇指南围绕 semantic-router 仓库中 sr-bench 基准评测的结果读取环节展开讲解如何阅读评测报告中的各项指标完整计划分母、四类 token、成本、TTFT、延迟分位数、如何用reconcile-usage做离线用量对账、如何理解基线选择与配对置信区间、如何在 Dashboard 的 Runs / Create evaluation / Datasets / Compare iterations 等页面中完成评测管理以及如何用recover-plan与recover显式恢复未完成任务。读完本文你可以准确解释一次 sr-bench 运行的每一行报告输出并能独立完成从创建评测到恢复失败运行的完整闭环。sr-bench 的 CLI 与Dashboard → Evaluation共享同一套持久化服务、运行 ID、结果与报告参见 sr-bench 1.0 总览因此本文的命令与页面操作针对同一份数据可互为印证。报告指标先看分母再谈分数报告给出的指标构成一次完整评测的结算单包括完整计划分母full planned denominators每个目标target按计划应完成的全部题数而不是实际完成的题数正确 / 已评分 / 失败数correct为判定正确的题数scored为已完成且能给出正确性布尔值的题数failed为失败题数每个基准的分数和区间各 benchmark 的准确率及其 95% 置信区间四类互斥 tokeninput_tokens、cached_input_tokens、cache_write_tokens、output_tokens四个桶四者互斥加总主体与裁判/模拟器成本subject 调用被测模型/路由与 judge/simulator裁判/用户模拟器分别计费的成本TTFT、延迟分位数、请求时长之和及实际 wall time首 token 延迟、P50/P90 等分位延迟、各请求耗时总和以及真实墙钟时间。关键语义约定未知值一律为null不会被打成 0。失败和部分运行仍然可见但不能称为完整评测——只有全部计划单元格都有明确终止结果时complete才为真。这一约定在 report.py 的 metric 实现 中体现为accuracy correct / total其分母是全部计划题数failures and unanswered count as incorrect即失败与未答都按错误计入而不是按已作答数计算。从源码看95% 置信区间采用 Wilson 区间见 report.py 的 wilson 函数对二项比例给出不因样本量为 0 而退化的区间。延迟分位数通过percentile()对排序后的延迟列表做线性插值得到report.py缺失时返回None。用量对账reconcile-usage修正已知费用对已终止的真实live运行可执行vllm-sr benchmark reconcile-usage RUN_ID该命令从保留的 SSE 计量retained SSE usage离线追加一条幂等、带版本的费用更正零模型调用只重算已保存的用量回执不发起任何推理请求报告、比较和后续导出都采用更正后的派生计量derived accounting原始调用/结果详情回执及冻结 manifest 保持不变更正不修改原始证据报告会暴露更正哈希、时间、核验/变更条数和新旧已知费用证据缺失或冲突仍保持unknown不会变成 0 或成为节省率证据。对账支持的场景是单模型调用以及有明确单次调用凭据的直接 MoMMixture of Models调用。源码在 accounting.py 的 reconcile_usage 中逐条核验保存的流与终止调用回执是否一致done、finish_reason、raw_usage、model并生成包含evidence_sha256、verified_call_count、corrected_call_count、新旧已知花费的 artifact通过store.append_accounting_correction持久化。对 MoM 目标只有当inference_call_count 1、没有model_usage、且selected_model与回执模型一致时才允许用最终响应流推算费用不能用最终响应流推算多次内部调用的费用。更正后的视图由effective_calls统一提供accounting.py原始调用详情接口则保留原始回执。CLI 侧命令定义见 benchmark.py 的 reconcile-usage 命令其注释明确Append an offline accounting correction from saved streams; no inference.cache_neutral_cost_usd反事实 token 等价费用cache_neutral_cost_usd是一个反事实指标将全部输入 token 按冻结的普通输入单价frozen fresh-input rate计价再加上输出费用得到不依赖缓存折扣的 token 等价费用。使用场景连续运行时缓存会被预热实测的四类 token 费用会因 cached_input 折扣而偏低。比较时同时查看它相对同一基线的节省率和实测四类 token 费用就能识别缓存预热的影响。务必记住它不是账单费用not billed spend也不是实测的无缓存执行not a measured cache-free execution比较中该指标仅覆盖 subject 调用subject-only。源码实现见 accounting.py 的 cache_neutral_cost按model_usage分段累加每段输入按冻结的普通输入单价计价再加输出用量缺失时返回None。报告侧在 report.py 的 metric 中只有当所有 subject 调用都具备该值时才会汇总。完整分数九个基准的固定权重完整 sr-bench 总分使用固定基准权重且九项全部完整时才输出总分Benchmark权重MMLU-Pro10%SimpleQA10%GPQA15%HLE15%ARC10%LiveCodeBench10%SciCode10%Terminal-Bench10%τ³10%源码中这些权重定义在 contracts.py 的 BENCHMARK_WEIGHTS键名为mmlu-pro、simpleqa-verified、gpqa-diamond、hle、arc-agi-2、livecodebench、scicode、terminal-bench-2.1、tau3。任一基准缺失时子集宏平均仍然是子集结果带有自己的 subset 标签不能被当作完整分数。运行不包含全部九个基准就没有完整 sr-bench 分数参见 index.md 中的规模表smoke 共 36 题、quick/dev 共 740 题、standard/holdout 共 3,183 题均为每个目标的整题任务数。基线选择与节省率不逐题选优不臆造节省基线baseline是在相同完整题集上按相同汇总规则选出的最强已测单模型不是逐题选优的 oracle。选择规则精确加权质量weighted quality相同出现并列时优先选择主体费用完整且最低的单模型仍并列则按固定目标 ID排序报告会列出全部并列最强模型。若任一并列最强模型的费用不完整total cost incomplete则节省率保持未知。节省率公式为节省率 100 × (1 − 候选主体成本 / 基线主体成本)要求完整兼容的计量。比较同时报告total_cost_saving_percent含 subject 与 judge/simulator 全部调用与subject_cost_saving_percent仅主体调用两者都用同一公式与同一完整计量范围见 report.py 的比较构建cache-neutral 比较则保持 subject-only。两条重要告诫小样本只能判断方向要声称质量持平non-inferiority需要预先确定的非劣界值prespecified margin和保留集holdout置信区间自托管 token 等价价格不是 GPU 账单节省——换算出的价格不能直接等同于 GPU 发票上的省钱。配对质量差值保守的 Hoeffding 区间配对比较的默认质量区间是基于独立题目差值的保守加权 Hoeffding 区间。其特点即使所有配对结果完全相同全部打平或全部答错区间也不会退化为零分层 bootstrap 区间保留为诊断值小样本产生[0, 0]不能证明能力持平两种区间都不包含最强基线选择、调优选择或数据污染带来的不确定性。源码实现见 report.py 的 paired_conservative_interval对每条独立配对差值值域[-1, 1]施加 Hoeffding 不等式半径sqrt(2·log(2/α)·Σ(w_b²/n_b))区间以quality_delta_ci95_method: weighted-paired-hoeffding标注bootstrap 用固定种子20260918重采样 2,000 次取[samples[49], samples[1949]]作为 95% 诊断区间report.py。另外报告还给出wins / losses / ties计数与逐题微平均差值micro_quality_delta方便判断提升的广度。连续性continuity与缓存读取指标英文原版 results.md 进一步补充了连续性模块中文版标注 outdated以下内容以仓库英文原版与源码为准multi_request_tasks含两次及以上 subject 请求的任务数如 agent、coding 任务每任务请求按存储顺序读取不触发 judge/simulatormodel_switches连续两次请求所选模型不同视为一次切换同时给出每任务均值与最大值decision_changed_tasks统计路由决策发生变化的任务数switched_accuracy/unswitched_accuracy按发生切换/未切换分组统计准确率失败计入错误没有所选模型的请求记为unknown而不是切换连续已知选择之间才累计切换unknown_model_requests记录它Fusion、Confidence、Workflows 或 fallback 下一次请求多次推理调用会隐藏自身模型序列其任务只计入multi_inference_tasks切换被当作事实报告而非惩罚A switch is reported as a fact, not a penalty。实现见 report.py 的 continuity 函数对每个 case 的请求序列用_observed_model取观察模型统计_changes相邻模型不同的次数并按请求阶段phase归因model_switches_by_phase。会话相关目标默认statelesssession_mode: session_aware的目标在 live 运行的每次 subject 调用上发送不透明的x-session-id同一 case 内保持一致跨运行/case/目标不同judge/simulator 调用不带该头subject 回执以session_id保留Router 侧会话策略需在配置中启用参见 tasks-and-targets.md 的session_mode说明。回执还包含phase与phase_sourceMoM 目标下 sr-bench 请求 Router debug 响应头读取会话策略阶段router表示响应含x-vsr-session-phaserequest表示 sr-bench 从最近消息推导tool_loop/user_turn。缓存读取指标cache_read_ratio、cache_read_call_count只统计 provider 实际上报了缓存字段cache_read_reportedtrue显式 0 也算上报的 subject 调用因此缺失的缓存用量保持未知而不是变成零命中观察流式调用中cache_read_usage保留上报过缓存读取的规范化用量事件后续省略缓存字段的事件不会抹掉该观察实现见 report.py 的 cache_read_metrics。旧运行缺少这些字段时缺失 phase 归入unknown缓存读取比率为 null 且样本数为 0。使用 Dashboard从 Runs 到 Compare iterationsDashboard 默认进入Runs页可按名称、模型、状态和模式筛选任务每行展示完成分母、失败数、持久化更新时间persisted update time和目标类型。只读轮询read-only polling在断网后会自动恢复并会发现 CLI 新建的任务关闭或刷新页面不会重启任务——运行由共享 worker 持续推进。在Create evaluation中先选择smoke、quick或standard三种 profilestandard 使用 holdout split与 quick 不相交再勾选一个或多个已准备 benchmark或使用Select all benchmarks可用来源必须具有相同的 profile、seed 和 splitReview plan只从这些冻结来源组合完整 benchmark 题组不下载数据、不重新抽样、不调用模型。完整使用一个来源时保留原数据集身份选择子集或组合多个来源时生成可复用的冻结数据集存在冲突时明确拒绝不静默合并Conflicting selections are rejected rather than silently merged。采样、预算以及请求和任务限制通过表单控件设置无需编辑 JSON已注册目标的固定参数会覆盖运行默认值并保持只读。Route preview还可填写可选的会话session和对话上下文conversation context以检查依赖会话状态的路由。启动前先审阅冻结计划审阅计划不生成模型答案。Datasets支持搜索、按 profile/benchmark 筛选和分页。点击数据集可查看题目、benchmark 覆盖和学科分组题目每页 25 条可按 benchmark、学科和文本搜索打开题目可阅读任务说明与选项固定来源pinned source可用时还能展示代码和 agent 任务的完整输入。参考答案、隐藏测试和工具凭据不会返回来源信息和哈希默认折叠点击Evaluate dataset可复用所选数据。注意两条纪律能浏览公开题目不代表题目从未被见过——不要用 standard 题目调优各 profile 的总题量是其已准备题集的题数之和题集可能重叠因此该数值不是去重题数也不是所选运行的实际分母。运行详情分为Results、Questions、Calls、Evidence和Recipe五个视图先看汇总结果再按需查看逐题响应、计量accounting和冻结配置。题目结果和调用列表每次最多读取 100 条、每页展示 25 条搜索仅作用于已加载记录完整调用内容按需读取汇总指标始终来自完整报告不受详情条数影响。恢复候选、排除原因和子任务也有分页。运行期间即使没有新题完成已用时间也会继续更新。正在执行的调用展示当前阶段、已用时间、最近记录的响应活动和接收字节数帮助区分长响应与已停止接收数据。但流活动不能证明答案质量也不是计费 token 数——token 和费用仍需完整的用量回执。CLI 可用同一条命令读取相同活动vllm-sr benchmark show RUN_ID --calls --active # --after 与 --limit 控制每页游标与条数Compare iterations分两步先选择存在兼容结果的 live 单模型基线再勾选任意数量的可比较候选没有兼容候选的基线不会出现在选项中。搜索可缩小候选范围Select all会跨页选择当前搜索匹配的可用运行。更换基线会清空候选更改任何选择后旧比较结果会隐藏直到再次点击Compare runs——服务端仍会逐一核验成对结果The service still validates every paired outcome。候选按创建时间排序选择保存在 URL 中不限制为两轮优化可多轮迭代。质量/成本图和迭代图配合成对置信区间、节省率、token、延迟和 wall time 展示结果卡片分页图表和 CSV、JSON 导出保留全部选中比较。判定准则点估计为正但区间跨零时不能认定已经提升A positive estimate with an interval spanning zero is not proof of a gain。MoM 目标的 Frozen recipesMoM 目标可由运维人员在注册信息中设置capture_recipe: true并固定config_hash和规范的preview_url。worker 仅在以下条件同时满足时捕获脱敏 reciperedacted recipe projection捕获前后生成的配置与生效运行时哈希都匹配冻结目标源配置 ETag 保持不变。Frozen recipes支持查看、下载及核对采集时间、投影哈希真实调用会独立确认实际配置哈希。下载内容省略部署连接信息和凭据是 recipe 产物不是完整可部署配置旧运行没有快照时明确显示不可用而不会借用后续配置。Run events事件快照与分页读取Run events按时间从早到晚显示可读事件支持类型筛选每页展示 25 条。打开详情最多读取 1,000 条后续记录需点击Load more events显式加载。接口不提供总数因此满页时只标注已加载数量筛选也仅覆盖已加载事件。事件是快照Refresh evidence重新读取快照运行进度仍独立轮询更新读取失败会保留游标和已有记录。重评分regrade和训练矩阵导出复用已保存证据不产生模型调用live 之外的离线操作均如此参见 iterate.md。显式恢复未完成任务worker 停止或响应丢失不等于可以自动重试生成。必须先核对持久化派发dispatches与调用记录。在已终止任务中使用Review recovery plan它区分两种范围Continue undispatched cases只允许继续从未派发过模型调用的单元格Retry known failed cases as new attempts需要明确选择单元格并确认新尝试及额外费用调用状态或费用不明确、已有完整答案、已被其他恢复任务领取的单元格均排除。恢复会创建独立子任务child run并保留原任务。子任务的分母、进度和成本只覆盖本次选择的范围原任务已知费用单独显示在 lineage 中。子任务完成不等于原 benchmark 已全量完成。Dashboard 在当前标签页保存待确认的完整恢复请求响应丢失时复用同一幂等键不会自动重试模型生成或重启 worker。CLI 命令流对应 benchmark.py 的 recover-plan / recover 命令vllm-sr benchmark recover-plan RUN_ID --mode undispatched --output recovery.json # 核对可继续/排除的单元格可用 selected_cells 指定已审核的子集。 vllm-sr benchmark recover RUN_ID --plan recovery.json --idempotency-key recovery-1若使用--mode failed最后一步还需--acknowledge-new-attempt源码中acknowledge_new_attempt为is_flagTrue用于Authorize new paid attempts for the exact reviewed failed cells。对账不确定的提交时必须复用相同计划、单元格和幂等键——recover会校验计划中的parent_run_id与目标运行一致防止跨运行误用计划。配套阅读sr-bench 1.0 总览规模表与三种 profile 的题量分布Connect the shared workerCLI 与 Dashboard 共享的 worker 服务Prepare reusable tasks and targets数据集冻结、历史保留与目标注册Plan and runmanifest 冻结、run 命令与限额Iterate with preview, replay and live evaluation预览、重放与 live 评测循环报告与对账实现report.py、accounting.py、contracts.py赞分享后端API网关模型推理服务AI Agent【免费下载链接】semantic-routerAn open, programmable decision layer for models and compute.项目地址https://gitcode.com/gh_mirrors/sem/semantic-router点击查看免费下载相关推荐semantic-router 基准测试完全指南sr-bench 1.0 端到端评测、组件微基准与结果报告规范semantic router 基准测试完全指南sr bench 1.0 端到端评测、组件微基准与结果报告规范 导读 本文是 semantic router后端API网关模型推理服务AI Agentsemantic-router sr-bench 1.0在冻结任务上实测 MoM 与单模型的能力、成本与延迟semantic router sr bench 1.0在冻结任务上实测 MoM 与单模型的能力、成本与延迟 sr bench 1.0 是 semantic后端API网关模型推理服务AI AgentVelero 恢复结果调试完全指南读懂 Restore 的 Warnings 与 ErrorsVelero 恢复结果调试完全指南读懂 Restore 的 Warnings 与 Errors 导读 在 Velero其前身 Heptio Ark中Re云原生灾备存储后端上一篇Node.js性能提升终极指南如何用node-fetch从100ms优化到10ms下一篇Go测试框架Ginkgo完全指南从入门到精通的终极教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考