mcpField
E
evals-implement

evals-implement

github.com/tikalk测试与质量143180 次安装今天更新
代码仓库

关于 evals-implement

evals-implement 根据已发布的 goldset 生成可执行评估器、单元测试和配置,适用于构建或更新 PromptFoo、DeepEval 评估套件的团队。

主要功能

  1. 01生成 PromptFoo 和 DeepEval 评估器
  2. 02二元通过/失败评估
  3. 03自动生成评估器单元测试
  4. 04根据训练样例自我调优
  5. 05生成分层评估配置

适用场景

  1. 01将已接受的 goldset 标准转为评估器
  2. 02新增标准后重建评估套件
  3. 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(闭合生产环路),生成完整、可执行的评估实现,并通过自动化单元测试验证评估器的正确性。

输出:

  1. 评分器/指标实现 - 为每项 goldset 标准编写 Python 评估器,采用二元通过/失败判定
    • PromptFoo:Python 评分器函数,输出 JSON,位于 evals/{system}/graders/
    • DeepEval:继承自 BaseMetric 的自定义指标类
  2. 评估器单元测试 - 自动化测试(evals/{system}/tests/test_check_*.py),使用 goldset 中的通过/失败示例运行生成的评分器,以确保评估器本身准确无误
  3. 评估配置 - 完整的配置文件(config.js 或 config.py),包含 Tier 1 + Tier 2 评估结构
  4. 自动移交给 /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/),验证评估器的准确性。
  • 评分器校准循环:
    1. 检查测试结果,检测训练用例中是否存在误分类(假阳性/假阴性)。
    2. 如果有测试失败,则触发反馈编辑步骤,解析失败原因,并自动调整评分器的内部提示词评估标准、正则表达式模板或分数阈值。
    3. 重新运行 pytest,检查准确性。
    4. 最多重复 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