@ agentium/ eval (英语)
测试和评分物剂产出的评价框架.
安装
npm install @agentium/eval
快速启动
import { EvalSuite, contains, regexMatch } from "@agentium/eval";
const suite = new EvalSuite({
name: "basic-tests",
agent: myAgent,
cases: [
{ name: "arithmetic", input: "What is 2+2?", expected: "4" },
{ name: "greeting", input: "Say hello", expected: "hello" },
],
scorers: [contains("4")],
});
const results = await suite.run();
文档
完整文件时间 参考文献. agentium.in
社区
加入对话 解析器。 。 。 .
许可证
麻省理工学院
必要的可靠性检查
只有在每一次必要的断言通过,得分达到规定的门槛时,才通过可靠性案例。 所有预期的工具都必须调用。 非空解答无法补偿丢失的工具、已停止运行或失败的断言。 超时和调用取消中止 Agent 请求, 并保持基础设施失败, 即使一个案件预期 Agent 错误 .
评价周期和结果规则
每个案子都有一个期限 包括特工执行 模型判断 合成对话 和计分员. timeoutMs (默认为30秒),等值(默认为1),和会话转弯限制必须是正限整数;阈值必须是从0到1的限值. 一个套房 signal 和一个案件 runOpts.signal 两者都取消了工作。 内建型号呼叫接收到这个信号. 自定义计分器可以接受可选的第四个 { signal, deadline } 参数,包括通过 custom()。 。 。 .
暂停/取消结果保留案件名称、投入和报告 failureKind。JavaScript召回无法强制终止: cleanupPending: true 指被忽略的取消且尚未解决的回调. 明确的目标会话ID仍然保留,直到其未决运行结束;重叠的再利用失败,基础设施的结果。 其他案例得到孤立生成的会话ID. 回调必须配合取消,并避免共享可变状态.
成功评价需要完成一个运行,每个计分员明确 pass: true,和配置的阈值。 分数必须是从0到1的有限度数字;结果不正确甚至以零入分数为分数。 判断接受准确 PASS编号 :FAIL,严格的数值结果,或JSON合同 llmJudge,只接受精确的 GOAL_COMPLETE 标记。 两个失败的比对运行平局.
可靠性检查需要成功的工具结果;被拒绝/失败的尝试不算数. toolCallMatch 默认保存尝试匹配; 选择 { mode: "successful" } 排除失败/否认。 要求的性能限制是二进制断言;缺少所需的 TTFT 度量衡失败而不是消失. 高地三角洲仍然是信息.
结构目标和分级覆盖
现有 agent 配置属性接受 EvalTarget: 任何对象
run(input: MessageContent, opts?: RunOpts): Promise<RunOutput>常规 Agent
实例仍然兼容。 多式联运输入和运行选项通过.
保留目标对象身份直到实际运行结束; 包装
共享后端必须共享保留所有者或使用后端的会话
锁定 超时从不开始另一代人 或法官重试.
ScorerResult.status 使遗留的有效返回正常化 graded。一个有效的
score: 0, pass: false 仍然是分级任务失败。 抛出记分员,畸形
和无效的模型法官的回应是 infrastructure_error; 个案
已经 gradingStatus: "incomplete",失败,并报告 failureKind: "infrastructure"。 。 。 .
生命周期超时/取消保留自己的分类. 已完成的产出是
如果后任法官出场或取消,则予以保留.
遗产 passed, (中文(简体) ), failed, (中文(简体) ), total,以及 averageScore 继续提供. total
是预定的执行分母,包括已取消的案件.
gradedCases (一) 计算完全有效分级的案件; infrastructureFailures
将基础设施分类案件与暂停/取消分开计算.
gradedAverageScore 完全分级的情况下的有效分数平均值
null 如果无。 在比较任务时优先选择这些覆盖域
质量; 缺少的分级不能成为通过或任务质量的零.
可选带子适配器来自 @agentium/harness/testing数字 :
import { EvalSuite, custom, toolCallMatch } from "@agentium/eval";
import { createHarnessEvalTarget } from "@agentium/harness/testing";
const target = createHarnessEvalTarget({
config: applicationHarnessConfig, // host-owned model, tools, policies and budgets
identity: verifiedIdentity,
});
const suite = new EvalSuite({
name: "harness-verification",
agent: target,
cases: [{ name: "requires test evidence", input: "Complete the change" }],
scorers: [
toolCallMatch(["run_tests"], { mode: "successful" }),
custom("trace-complete", async (_input, output) => {
const pass = target.observation(output)?.toolCallCoverage === "complete"
&& output.status === "completed";
return { score: pass ? 1 : 0, pass };
}),
],
});
适配器接受 sessionId, (中文(简体) ), signal,以及 runMode附加时 userId编号 :tenantId
只有当他们符合 其俘获的核实身份。 其他指定 RunOpts
失败 HarnessUnsupportedError; 配置权威、历史、模型和
服务在主机带。 明确会议继续进行
历史 每项业务都有其观察员;所借资源库仍然是东道主所有.
工具观察只保留有边框的ID、名称、错误和否认,并有源代码
有效载荷被忽略 。 默认为128个工具和65536个串行元数据字节.
toolCallCoverage: "partial" 表示溢出、观察员出错或失败/取消
运行时防止建立完整的观测。 无法证明部分前缀
禁止的药效是不存在的。 单靠成功解决无法建立
商业成功,例如返回退出代码为0的程序。 验证主机
执行记录,并附有这一要求的完成核查人。 本地失败
地图到 error的地图 stopped,而 TTFT 在
未测量。 合理性和核心不依赖评价.