用途:为 skillgrade 评估编写评分器(grader),分为确定性(deterministic)与 LLM 量规(llm_rubric)两类,用于给任务结果打分。
主要能力与用法:
- 确定评分策略:客观验证用确定性评分,定性评估用 LLM 量规。多数任务两者结合,如确定性权重 0.7、LLM 量规权重 0.3。
- 确定性评分器:在技能的 graders/ 目录下写 bash 或 TypeScript 脚本,向 stdout 输出 JSON,结构为 {"score": 0.67, "details": "2/3 checks passed", "checks": [...]},score(0.0–1.0)和 details 必填,checks 可选。bash 脚本中算数用 awk(node:20-slim 无 bc)。在 eval.yaml 中以 type: deterministic、run: bash graders/check.sh、weight 引用。
- LLM 量规评分器:编写含明确评分标准与分值的量规,分节权重合计 1.0。在 eval.yaml 中以 type: llm_rubric、rubric、weight 引用,可选 provider(gemini 默认|anthropic|openai)与 model;长量规可存为文件用路径引用。
- 组合多个评分器:按重要性分配权重,权重自动归一化,最终奖励为 Σ(评分×权重)/Σ权重。
- 验证:创建参考解,运行 skillgrade --validate。可只测确定性评分器(--grader=deterministic,跳过 LLM 调用)或只测 LLM 量规(--grader=llm_rubric),也可指定 --eval=my-eval 与评分器类型组合。
限制与错误处理:确定性评分器非 JSON 输出时,需把除最终 JSON 外的 echo/console.log 重定向到 stderr;LLM 量规返回 0.00 且提示缺 API key 时,按 provider 设置 GEMINI_API_KEY、ANTHROPIC_API_KEY 或 OPENAI_API_KEY;自定义/自托管端点可设 ANTHROPIC_BASE_URL 或 OPENAI_BASE_URL(如 Ollama、vLLM);多次试验分数不一致时,通过补充通过/失败的具体示例减少量规歧义。