关于 evals-implement
evals-implement 根据已发布的 goldset 生成可执行评估器、单元测试和配置,适用于构建或更新 PromptFoo、DeepEval 评估套件的团队。
主要功能
- 01生成 PromptFoo 和 DeepEval 评估器
- 02二元通过/失败评估
- 03自动生成评估器单元测试
- 04根据训练样例自我调优
- 05生成分层评估配置
适用场景
- 01将已接受的 goldset 标准转为评估器
- 02新增标准后重建评估套件
- 03用通过/失败样例检查评估器
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tikalk/ adlc-team-skills --skill evals-implement安装后在 Claude Code 中输入/evals-implement确认已加载。
附带文件scripts/bash/setup-evals-implement.shscripts/powershell/setup-evals-implement.ps1
详细介绍
evals-implement
此技能的作用
根据已发布的 goldset,遵循 EDD 原则 VIII(闭合生产环路),生成完整、可执行的评估实现,并通过自动化单元测试验证评估器的正确性。
输出:
- 评分器/指标实现 - 为每项 goldset 标准编写 Python 评估器,采用二元通过/失败判定
- PromptFoo:Python 评分器函数,输出 JSON,位于
evals/{system}/graders/ - DeepEval:继承自
BaseMetric的自定义指标类
- PromptFoo:Python 评分器函数,输出 JSON,位于
- 评估器单元测试 - 自动化测试(
evals/{system}/tests/test_check_*.py),使用 goldset 中的通过/失败示例运行生成的评分器,以确保评估器本身准确无误 - 评估配置 - 完整的配置文件(
config.js或config.py),包含 Tier 1 + Tier 2 评估结构 - 自动移交给
/evals-validate以运行验证
应用的 EDD 核心原则:
- 原则 VIII:闭合生产环路 - 通过失败类型门控将问题导向相应操作
- 原则 II:二元通过/失败 - 确保评分器严格返回 1.0(通过)或 0.0(失败)
- 原则 IX:测试数据即代码 - 使用数据集示例对生成的代码进行单元测试
使用时机
- 执行
/evals-clarify后:将已接受的 goldset 标准转换为可执行代码 - 重新生成配置:添加新的 goldset 标准后,重新构建评估器套件
- 添加单元测试:增强评估器本身,防止回归或错误
不适用时机
- 尚未发布 goldset:先运行
/evals-clarify生成goldset.json - 运行评估:使用
/evals-validate,根据应用输出运行评估套件
流程
用户输入
$ARGUMENTS
--system SYSTEM— 覆盖当前启用的评估框架(promptfoo或deepeval)--no-tests— 跳过为评分器生成自动化单元测试(不建议)
执行步骤
阶段 1:从轨迹合成评分器(自动化评估工程)
- 读取
evals/{system}/goldset.json。 - 将 goldset 标准中的丰富证据字段映射到评分器逻辑中(从轨迹合成评分器):
- 使用
pass_condition和fail_condition作为评分器的核心规则。 - 提取通过/失败示例,作为原始数据锚点和评分器逻辑中的少样本分类锚点。
- 将
Root Cause Analysis和axial_coding注释作为上下文提示词指南或正则表达式模式注入,以捕捉确切的失败表现。
- 使用
- 对于 PromptFoo:生成 Python 评分器函数(
evals/{system}/graders/check_*.py),其中包含根据这些 goldset 输入编译的专用动态 LLM 裁判模板或正则表达式检查。 - 对于 DeepEval:生成根据这些 goldset 输入编译、继承自
BaseMetric的自定义指标类。 - 所有评分器都严格遵循二元通过/失败标准(仅返回
1.0或0.0,不泄漏 Likert 量表分数)。
阶段 2:生成单元测试
- 为每个评分器生成对应的单元测试(
evals/{system}/tests/test_check_*.py)。 - 单元测试验证评分器是否能正确识别 goldset 中的训练通过和失败示例。
阶段 2b:闭环评分器自调优
- 执行生成的单元测试(
pytest evals/{system}/tests/),验证评估器的准确性。 - 评分器校准循环:
- 检查测试结果,检测训练用例中是否存在误分类(假阳性/假阴性)。
- 如果有测试失败,则触发反馈编辑步骤,解析失败原因,并自动调整评分器的内部提示词评估标准、正则表达式模板或分数阈值。
- 重新运行 pytest,检查准确性。
- 最多重复 3 次迭代(硬性熔断上限)。
- 锁定留出集:确保留出验证集(
holdout.json)完全隔离,且绝不加载或暴露给自调优循环(以防止过拟合)。 - 失败升级处理:如果评分器未能在 3 次迭代内收敛到 100% 的训练准确率,循环将停止,显示失败测试用例的详细信息,并报错,而不是静默通过。
阶段 3:配置生成
- 生成统一的框架配置文件(
config.js或config.py)。 - 配置独立的 Tier 1(快速检查,<30s,确定性)和 Tier 2(语义检查,<5min,LLM 评审)流水线。
阶段 4:自动移交
触发 /evals-validate 以运行验证。
验证
evals/{system}/graders/包含针对每项标准的 Python 评分器脚本,这些脚本根据 goldset 通过/失败示例和根因分析动态编译生成evals/{system}/tests/包含对应的单元测试文件- 框架配置(
config.js或config.py)已成功生成 - 评分器校准自调优循环已运行,并在 3 次迭代上限内收敛到 100% 的训练准确率(否则会明确报出未收敛错误)
- 已确认留出数据集受到保护(调优期间,验证用的
holdout.json完全隔离且未被触及) - 所有评分器单元测试均在本地通过(
pytest evals/{system}/tests/) - 移交摘要列出生成的评分器、自调优迭代次数和测试结果
评论
支持 Markdown