如何量化多智能体质量?open-multi-agent评测体系指南:EvalSet离线回归、在线采样与CI质量门禁
2026/9/2 9:29:25 网站建设 项目流程

如何量化多智能体质量?open-multi-agent评测体系指南:EvalSet离线回归、在线采样与CI质量门禁

【免费下载链接】open-multi-agentTypeScript AI agent orchestration framework with dynamic workflows. Describe the goal, not the graph: a coordinator plans the task DAG at runtime and runs it on any LLM (Claude, ChatGPT, Gemini, DeepSeek, or local models).项目地址: https://gitcode.com/gh_mirrors/op/open-multi-agent

open-multi-agent 是一款 TypeScript 多智能体编排框架,内置完整的评测(Evaluation)体系,通过 EvalSet 离线回归、在线采样和 CI 质量门禁三种方式,帮你把多智能体系统"感觉变差了"的模糊印象,变成可量化、可回归、可拦截的评测数据。

🎯 为什么多智能体系统需要量化评测

多智能体系统的输出天然不稳定:换了提示词、换了模型、甚至同样的一句话,任务 DAG 的拆解和执行路径都可能不同。open-multi-agent 没有跨提供商的随机种子(seed)约定,因此官方不建议追求"单次可复现",而是推荐用repeats多次采样、对比聚合统计。

这里还要先区分两套容易混淆的机制:

运行时验证(runConsensus()/ 任务verify评测(Evaluation)
时机一次业务运行过程中离线批量,或线上运行结束后异步
会改变业务结果吗会(可接受、修正或拒绝)不会,只观察
度量对象单次结果用例集、版本、回归与趋势

两者可以组合使用:验证守护单次运行,EvalSet 则能长期追踪验证通过率的变化。

📊 评测体系总览:三根支柱

  1. EvalSet 离线回归:把测试用例固化成版本化的 EvalSet,对"目标系统"批量打分,产出EvalRunReport报告;
  2. 在线采样:在生产流量中按比例或规则抽取运行,异步打分入库,绝不打断业务响应;
  3. CI 质量门禁:用GatePolicy阈值 + 基线回归检查,把报告直接变成流水线里的红绿灯。

评测子路径为@open-multi-agent/core/eval,完整设计文档见 docs/evaluation.md,核心实现位于 packages/core/src/eval/。

一、EvalSet 离线回归:5 分钟跑通第一次评测

离线评测由四个概念组成,各承担一个职责:

  • EvalSet:版本化的用例集。defineEvalSet()要求名称、版本、用例 ID 唯一,用例可打标签(tags)以便按filterTags选取子集。内容一变就升version
  • Scorer(评分器):对单次输出打分,分数必须是 0~1 的有限数,pass可选,留给门禁使用自己的阈值。用defineScorer()定义并冻结;
  • Target(目标):被评测的系统。一个 async 函数即可,也可以直接用便捷目标targetFromAgent()/targetFromTeam()/targetFromPlan()把现成的 agent、团队或固定计划变成评测目标;
  • RunnerrunEvalSet()负责调度。每条"用例 × 重复"样本跑一次,样本之间按concurrency并行(默认 2),中途中断会返回aborted: true的部分报告。

跑完后,报告EvalRunReport提供每个评分器的avgp50p95minpassRate,以及按标签聚合的byTag(百分位采用最近秩法,样本少时行为可预期)。

⚠️一条重要规则:评分器失败 ≠ 零分。评分器抛错、拒绝或超时,说明"质量没有被测量",报告会把该样本记为scorer_error并从所有分母中剔除;目标本身抛错则记为target_error。千万不要用{ score: 0 }顶替失败,否则会污染你的质量指标。

一个无需 API Key 即可运行的完整示例(双目标对比 + 规则评分器 + 评审评分器 + 门禁)在 eval-offline-regression.ts,直接npx tsx即可跑。

二、内置参考评分器与"模型评审"(Judge)

框架自带一组小而明确的参考评分器,覆盖多智能体 DAG 的结构性指标(均来自 packages/core/src/eval/scorers/):

评分器衡量什么
toolCallSuccessScorer()工具调用成功比例
structuredOutputComplianceScorer(schema?)结构化输出存在且通过 Zod 校验
costBudgetScorer({ maxTokens?, maxCostAmount? })是否在 token / 金额预算内(硬门槛)
dependencyUtilizationScorer()带依赖任务链的完成率(保守代理指标)
duplicateWorkScorer()智能体之间重复劳动的比例
noProgressScorer()连续"空转"轮次是否超限
createAnswerRelevancyScorer()答案与问题的相关度(评审打分均值)

其中依赖利用率、无进展两个指标基于 trace 的结构化事实计算,重复劳动则从内存结果读输出,隐私友好。

语义类质量交给模型评审createJudgeScorer()支持配置多个评审模型、quorum 通过规则、超时与自定义判定 Schema。注意评审会把被评测输出发送给评审模型——涉及敏感数据时这是必须做隐私决策的一步。评审提示词、模型、配置只要变化,就要升评分器version,否则基线回归比较会因"不可比"而跳过。

三、在线采样:在生产流量中"顺手"打分

离线回归覆盖的是"你想到的用例",而线上真实流量往往更刁钻。open-multi-agent 的在线评测是可选开启的:在OpenMultiAgent配置里加上evaluation即可。

它的几个关键特性决定了线上安全:

  • 零侵入:运行结束后只做一次同步的采样决策和入队判断,评分与写库全部异步执行,runAgent()runTeam()等所有入口共用同一个评估器;
  • 采样策略灵活:数值采样(如sample: 0.05抽 5%),或规则函数按状态和元数据挑选——例如"只评测金丝雀环境里失败的运行";
  • 资源有界maxConcurrentmaxQueueLength限制队列,budget.maxEvaluationsPerMinute限每分钟评分次数,maxCostPerHour限评审成本;
  • 隐私默认安全storePayloads默认none(不存输入输出快照);redacted存脱敏截断副本;full是显式隐私决策;
  • 性能可忽略:官方基准中采样 + 入队判断的 p95 约 0.42 微秒;
  • 生命周期由你掌控:进程退出前调用forceFlush()等待已接纳样本、shutdown()原子停止;所有定时器不阻止进程退出。

存储侧提供InMemoryEvalStore(短生命周期、测试用)和 Node 专用 FileEvalStore(追加式 NDJSON、按批原子提交、支持压缩)。在线采样示例见 eval-online-sampling.ts。

四、CI 质量门禁:把报告变成流水线红绿灯 🚦

evaluateGate()是纯逻辑函数,输入报告 +GatePolicy,输出只有三样:passfailureswarnings。策略支持:

  • 阈值检查:按评分器指定avg/p50/p95/min/passRate,可叠加tag作用域(例如"critical 用例 p50 ≥ 0.85");
  • 健康检查maxScorerErrorRate(默认 >10% 报错,意味着评测设施本身不可信)与maxTargetErrorRate
  • 基线回归:把上一版通过的 JSON 报告作为 baseline,限制maxRegression与逐评分器回退幅度。评分器版本不一致时会警告并跳过该评分器的回归比较——避免"换了裁判比成绩"的假回归。

官方推荐的基线工作流是四步:运行并导出report.json→ 审查后提交为evals/baseline.json(连同版本化 EvalSet 与门禁策略)→ CI 中用--baseline对比 →只有人工确认行为变化后才更新基线,CLI 从不自动改写它。

命令行入口在 docs/cli.md:

oma eval run --set ./evals/set.json --target ./evals/target.mjs \ --gate ./evals/gate.json --baseline ./evals/baseline.json \ --report json --report junit --out ./eval-results oma eval gate --report ./candidate/report.json --gate ./evals/gate.json

门禁未过或目标全部失败时退出码为 1,文件/参数错误为 2——正好对接 CI 的步骤状态;判定结果同时写入verdict.json供下游消费。报告支持 JSON(权威格式)、Markdown(人工审查)与 JUnit(CI 展示失败明细)三种格式,可直接当构建产物上传。

框架自身的 routing-stability-set.json 就是活案例:用冻结的用例集验证"换语言、换提示词长度,任务拓扑是否漂移",配合 routing-stability-gate.json 把治理类路由锁定为 0 翻转。

五、关键文件速查

  • 评测设计文档:docs/evaluation.md
  • 评测子路径源码:packages/core/src/eval/(runner.ts、gate.ts、online.ts、judge.ts)
  • 离线回归示例(免 Key):eval-offline-regression.ts
  • 在线采样示例:eval-online-sampling.ts
  • 基线与门禁策略示例:baseline.json、gate.json
  • CLI 参考:docs/cli.md

❓ 常见问题

评分器报错应该记 0 分吗?不要。scorer_error表示"没测到",会被排除在所有分母之外,由门禁的健康上限(maxScorerErrorRate)决定这次评测是否可信。

在线评测会拖慢业务响应吗?不会。运行结束后只发生一次采样判断和入队;评分与持久化尽力而为、与业务结果完全隔离。宿主必须在退出前等待样本时,显式调用forceFlush()

targetFromPlan()能让评测完全确定吗?它冻结了任务图、省去协调器再拆解,但模型响应仍会变化(无跨提供商 seed)。正确姿势是用repeats多次采样、对比分布,而不是期待逐次一致。


三根支柱的分工一句话总结:离线回归管"发布前",在线采样管"发布后",CI 门禁管"能不能合并"。三者共享同一套EvalRecord数据模型,从此你改一次提示词,质量涨跌就有据可查。

【免费下载链接】open-multi-agentTypeScript AI agent orchestration framework with dynamic workflows. Describe the goal, not the graph: a coordinator plans the task DAG at runtime and runs it on any LLM (Claude, ChatGPT, Gemini, DeepSeek, or local models).项目地址: https://gitcode.com/gh_mirrors/op/open-multi-agent

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询