@corbits/evals

中文文档
0.2.1发布于 2026/10/27LGPL-2.1-onlyTypeScriptES Module近 30 天下载 4632

一个运行评价呼叫中代理和工作流程的Evals:代码,Jev和帮助计分员在JSONL或内置数据上,每计分员在允许的误差和下放上门.

中文使用文档
文档目录13 节
  1. 安装
  2. 示例
  3. 检查
  4. 运行
  5. 案例
  6. 通过
  7. 国 际
  8. 工作流量计分器
  9. 中断更改
  10. 校正
  11. 同伴
  12. 实例
  13. 盖茨

@c轨道/evals

代理和工作流程的Evals在一个电话: 运行每个案件,检查它, 打印摘要,当检查缺失或下降超过允许时失败.

安装

bun add @corbits/evals

仅装入(>=1.2.0).

示例

import { mentions, runEvaluation, under } from "@corbits/evals";

const report = await runEvaluation({
  name: "refund-agent",
  task: refundAgent, // an @intx/agent Agent, workflow(), or (input) => output
  data: [{ name: "duplicate charge", input: "I was charged twice" }],
  scorers: {
    refunds: mentions(["refund"]),
    readyToSend: "Is this reply ready to send to the customer?",
    fast: under({ ms: 5_000 }),
  },
  allow: { readyToSend: 1 },
  compare: "evals/refund.last.json",
  about: { model: "qwen2.5:7b" },
});
console.log(report.markdown());

检查

scorers 将名称映射到支票。 无 scorers,一个 matches 检查 比较产出与 expectedOutput。每张支票都会运行 r = { input, output, expectedOutput, steps, ms }· ; output 不论跑什么 已经返回.

  • 代码数字 : (r) => boolean | number,同步或同步。 数字是0.1 并且只在1时通过;返回布尔以选择自己的阈值,或 { pass, value, explanation } 细节.
  • 句子:对Jev来说是/不是关于跑步的问题. 传球 页:1 yes,失败 no (默认情况下为0.7/0.3),以 unsure (p=…) 在中间. { question, yes, no } 设置自己的栏杆.
  • 帮助者数字 :
帮助者当
matches(field?)输出值,或每个输出值的同字段(键或存取器)
includes()既包含字符串,又包含在 NFKC 、 三进制和白空间崩溃后预期输出; 值为 1 或 0
fitsSchema(schema)输出满足标准Schema( 暗型、 zod 、 valibot)
mentions(words)输出包含每个单词, 对大小写不敏感; 值是找到的分数
avoids(words)输出中没有任何单词
ranSteps(names)tool 财务报告和审定财务报表 step 名称匹配 names,命令被忽略;值是他们的F1. 代理轨迹来自 stream()。 。 。 . ranSteps([]) 失败当 steps 为空。 观测到的只使用模型的运行( 万步、 无工具或步骤名称) 仍然通过
stepsAtMost(n)运行最多 n 步骤
under({ ms })在内部完成运行 ms
ask(q, { options, pass })Jev 选择一个在 pass
ask(q, { options, passAt })Jev选择一个选项;其信用值(0.1)是价值,并经过 passAt
ask(q, { levels, pass })Jev职等 pass 或以上(最低一级)

mentions 财务报告和审定财务报表 avoids 还带 (r) => words 每一个字. mentions 财务报告和审定财务报表 ranSteps 带 { atLeast } 以通过部分信用. ask 无法确定 Jev 最高概率低于 sure (默认为0.6;支票本身) sure ) (中文(简体).

一张扔出、挂出 timeout,或返回任何其它失败 它的兄弟姐妹仍然在奔跑。 Jev运输故障关闭 .

杰夫看见了 { input, output, expectedOutput, steps },而一个案件的字符串和 ask 检查在一个电话中回答。 该模型没有配置在 systemOne()。 。 。 . 用它来建造 judgeModel({ model, invokeStep, thresholds, escalate, timeout }) 从 @corbits/evals/workflow。 。 。 . model 是一个工作流程步骤(或一个步骤) 工作流程. invokeStep 运行该步骤;其输入是 { state, questions } 它的输出是 { decisions } 或者说 { fallback: true, reason }。 。 。 . systemOne({ thresholds, escalate }) 只能设置条和升级剂. jev 是一种异名 systemOne。 。 。 .

门槛值:p(是) ==== yes 失败 页:1 no (0.7个/0.3个); ask 无法确定当它的顶端 概率低于 sure (0.6) (中文(简体) ). 调整他们每个法官 judgeModel({ thresholds: { yes, no, sure }, ... }) 或按上述检查. 阈值被调取到法官的版本,所以把继子代理的模型钉上 当他们必须保持稳定.

升级 : sure 两倍于升级门。 给法官一个 代理人 - escalate 打开 systemOne 或者说 judgeModel,任何东西 send(prompt) 返回时 { type: "reply", reply } 或者说 { type: "suspended" },例如 @intx/agent 来自 a 的代理 @corbits/* 适配器——每个不确定的决定都重新得到准确的答案 空间。 回答通过同样的通过规则 减去信心 门,所以主不肯定在升级后仍然会失败. 掷出, 已中止,或解答空格回复失败。 验证 jev的不确定语没有提及 倒置的精确度,推理模型 可能回答的答案 空间无法吸收——这些故障被设计关闭.

运行

  • 函数数字 : (input, signal) => output。 。 。 . signal 终止于 timeout。 。 。 .
  • 探员页:1 @intx/agent 探员,被检测到 send输入 作为信件;输出是回复。 当代理有 stream()步骤 从该溪流录入(inference.done 作为 llm, (中文(简体) ), tool.start 编号 : tool.done 作为 tool) (中文(简体) ). 拒绝执行的政策 tool.done 无 tool.start; 当 inference.tool_call.end 或助理人员 tool_call 块名。 仅回复发送而不发送 stream 叶子 steps 空, 失败 ranSteps([])。观察到 只有模式运行仍然通过.
  • 工作流程数字 : workflow(definition, { invokeStep }) 从 @corbits/evals/workflow定义无法在本地运行 步调引用器,根从不加载 @intx/workflow,所以一个裸体 定义被拒绝。 每一步都着陆 r.steps。 。 。 . output 选择 由完成运行生成( 默认: 最后列出的步骤输出) , trigger 绘制触发有效载荷的输入图。 没有他们,键入 以 workflow<I, O>(...)。相同的条目出口 judgeModel 页:1 字符串和 ask 计分者. 只有密码的Eval不需要法官.

repeats 运行了多次; 只有每次才通过检查 尝试通过. concurrency (违约4)限制飞行中的案件; timeout (单位:千美元)"60s" 或 ms) 绑定每次运行和每次检查.

案例

数组 { name?, input, expectedOutput?, must?, skip? },或路径 a 相同对象的JSONL文件. 地面真实的关键是 expectedOutput。 。 。 . expect 财务报告和审定财务报表 expected 掷出. name 将案件输入报告 比较运行和默认与输入.

通过

await runEvaluation({
  name: "judge",
  task: run,
  data, // a case can say { must: ["tests"], skip: ["docs"] }
  scorers,
  compare: "evals/judge.last.json", // read: measure drops against it
  save: "evals/judge.last.json", // write: store this experiment, pass or fail
  allow: {
    tests: { miss: 1, drop: 0 },
    docs: { miss: 5, drop: 2 },
    focused: 3, // { miss: 3 }
  },
});

每一次检查, allow 集( 默认 0 ):

  • 错过:可能失败的案件.
  • 丢入案件数: compare 运行,现在可能失败。 A 类 固定大小写不会抵消一个破旧小写.

一个案子 must 检查必须通过任何 allow 说; 其 skip 检查 没有运行或计算.

runEvaluation 打印每个记分员的通行证, 丢失和丢弃, 并用 EvalFailure 命名每个失败的计分器及其失败的极限 案例; .report 保持每个结果.

实验是每个案例×分数的通过和价值——加上Jev分数的 概率分布和信心——以及 about没有时间. 已保存的文件为格式 2: { format: 2, name, cases }。任何其他 format, (中文(简体) ), 包括格式1,拒绝. compare 只读; 缺少的文件跳出. save 只写, 在 每一跑步都一样 两者的一条路径与上次实验相比,然后替换 这个. compare 还从早期开始做实验 runEvaluation 成员名单 评估, 没有文件 : runEvaluation({ ...spec, compare: before.experiment })。 。 。 . 翻转打印为 fixed 编号 : broke,新案件和已结案案件作为 added 编号 : removed。 。 。 . quiet: true 跳过摘要.

国 际

软件包本是 corbits-eval (单位:千美元)./dist/cli/index.js) (中文(简体) ).

corbits-eval run ./evals/refund.ts
corbits-eval run ./evals/refund.ts --format json

文件是从当前工作目录中解析的ES模块路径. corbits-eval 装入 evaluation 当它是光谱对象时导出, 否则 默认导出时为 spec 对象,否则为零参数 用于其中任一出口。 该函数必须返回一个 spec 。 没有其他 出口读取.

一个 spec 是对象 runEvaluation 接受(name, (中文(简体) ), data, (中文(简体) ), task, (中文(简体) ), scorers,和其余部分). 案件行使用情况 expectedOutput。CLI呼吁 runEvaluation;它不会自己得分.

退出代码 :

代码何时
0 个跑道经过它的大门
1个评估失败的门
2个缺少文件、 导入失败、 没有光谱导出或评价未运行

--format json (和 --json)来源于意外事故,仅将JSON的结果印出于stdout上,没有人类摘要. 退出 1 仅是一个失败的闸门( E)EVAL_FAILED) (中文(简体) ). 在运行开始前停止运行的配置, 如空 data 或字符串或 ask 无计分器 judge.invoke,2号出口.

工作流量计分器

@corbits/evals/workflow 还输出了4名预先建造的一阶法官。 每个 用钉子 { provider, model } 也不称模式本身: faithfulness, (中文(简体) ), answerRelevancy, (中文(简体) ), correctness,以及 trajectoryAccuracy。 。 。 . 每个返回 { definition, payload, failure }运行 definition 与 workflow,使用 payload(run) 作为触发器。 结果是 payload 是结果; failure 是无法判断运行时关闭的错失 . parsePrebuilt(id, output) 读取步骤的类别或分数 JSON. judgeModel 预期 { decisions } 或者说 { fallback } 不运行 这些主题. includes 留下来 对根包进行代码检查.

中断更改

  • 保存的实验必须是格式2({ format: 2, name, cases }。格式 1 被拒绝.
  • JSONL 行数 expectedOutput。 。 。 . expect 财务报告和审定财务报表 expected 掷出.
  • ranSteps([]) 失败当 steps 为空。 观测到的只有模式运行仍然通过.

校正

阈值是每个工作负荷的起点,而不是常数. calibrate 通过 Jev 运行标有标签的样本一次, 并打印、 检查、 检查次数 判决同意,土地不确定,或自信地不同意每个门槛:

const table = await calibrate("refund-agent", {
  run: refundAgent,
  cases: labeledCases, // { input, expectedOutput?, labels: { readyToSend: true } }
  checks: { readyToSend: "Is this reply ready to send to the customer?" },
  judge,
});
console.log(table.markdown());

有/无检查扫描 yes 与 no 镜像; ask 扫描 sure粘贴 建议在支票或法官中取消。 没有自信 分歧是目标;如果没有分歧,获胜最少.

同伴

  • @corbits/evals数字 : @intx/inference 财务报告和审定财务报表 @intx/types,同龄人 @corbits/system-one。 。 。 .
  • @corbits/evals/workflow数字 : @intx/workflow (可选).

实例

examples/ 与当地奥拉马(bun examples/<name>.ts) (中文(简体) ). examples/ports/ 共同价值模式和打印协议 aBCDE 事实性,关键词 重叠 忠诚 双向战斗 1-10帮助.

盖茨

bun run check =打字检查+lint+格式:检查+单位+e2e. 行为生活在 e2e/· ; src 单位测试保持稀薄.

版本与发布记录

@corbits/evals 共发布 6 个版本,首次发布于 2026/10/11;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.2.1latest2026/10/2714 天前
0.2.02026/10/2714 天前
0.1.22026/10/2021 天前
0.1.12026/10/1130 天前
0.1.02026/10/1130 天前
0.0.0-stage2026/10/1130 天前

关于 @corbits/evals 的常见问题

@corbits/evals 是什么?

一个运行评价呼叫中代理和工作流程的Evals:代码,Jev和帮助计分员在JSONL或内置数据上,每计分员在允许的误差和下放上门.

如何安装 @corbits/evals?

在项目目录运行 npm install @corbits/evals,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 corbits-eval,可以用 npx corbits-eval 直接运行。

@corbits/evals 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@corbits/evals 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@corbits/evals 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@corbits/evals 可以商用吗?

@corbits/evals 使用 LGPL-2.1-only 许可。弱 Copyleft:作为库被调用时通常不要求开源你自己的代码,但修改库本身需以 LGPL 开源;前端打包合并后的适用边界存在不同理解。以上为概括,不构成法律意见,请以许可原文为准。

@corbits/evals 的下载量有多少?

根据 npm 官方下载统计,@corbits/evals 在 2026/10/11 – 2026/11/09 这 30 天内被下载 4,632 次,日均约 154 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@corbits/evals 还在维护吗?

最新版本 0.2.1 发布于 2026/10/27(14 天前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/10/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。