Skip to main content
NiceEval 提供两种评估题型。defineEval 回答一次运行是否满足要求,默认报告读通过率;defineScoreEval 回答完成了多少,默认报告读累计分数。两种题型都调用即登记 Assertion,handle 只配置同一条 entry。

必须做到的事用 defineEval

Boolean matched 进入 Verdict;mismatched 使最终 Verdict 为 failed,但不会阻止其它 Assertion 继续登记和结算。需要让后续代码依赖这条结果时,await handle.orStop()

连续质量线

similarity(...) 这类 Match 产生 [0, 1] 的 measurement。通过制评估必须用 .atLeast(n) 给它阈值:
低于 atLeast 时,这项要求失败。只想留下不影响判定的说明时用 t.diagnostic(...),不要登记无消费的测量值。

走完三步也要记三分

分步骤任务适合 defineScoreEval。Assertion 默认只保存 evaluation,不计分;.score(n) 才让该项贡献分数。Boolean matched 贡献 n,mismatched 贡献 0;measurement m 贡献 m * n
t.score(n) 直接登记 contribution,n 必须 finite 且不小于零,返回的 handle 只能配置 keylabel。同一个 Assertion 可以同时配置 .score(n).atLeast(n),evaluator 只求值一次,顺序可互换。 test 正常返回时,NiceEval 自动封口。没有计分项也是有效结果,得到正式 score: 0;这表示评估成功形成了零分,不是执行失败或证据不足。

两种题型的结果

计分制的 scored 可以是 0 分。零分说明评估成功形成了分数,不等于执行失败或证据不足。计分制没有 Attempt Verdict。

Judge 也是 measurement

Judge recipe 直接登记 measurement Assertion。先声明 judge capability,再在同一 handle 上配置阈值或分数:
同一条 Judge Assertion 可以同时配置 .score(n).atLeast(n),evaluator 只运行一次。Judge 没有单独的消费 API。

代码任务用真实命令验收

判分标准本身是一份文件时,用 loadText 读取隐藏测试、参考实现或跑测脚本。文件改动会触发对应评估重跑,详见隐藏测试判分

实用建议

  • 把每个必须成立的条件登记为 Boolean Assertion,让一次 Attempt 收集完整失败信息。
  • 后续步骤依赖某条结果时,await handle.orStop()
  • 任务存在有意义的部分完成度时使用 defineScoreEvaltest 正常返回时自动收尾。
  • 开放式语义用 Judge;可精确检查的文件、命令与结构化输出优先用确定性 Match。