SuperAPI AI 工具集

dspy-evaluation-harness

写作与研究

查看项目

更新于 10-15 22:38

技能介绍

该技能面向 DSPy 3.2.x,主题是构建评测框架并编写带文本反馈的 metric。资料强调:metric 往往比程序本身更重要,尤其在使用 dspy.GEPA 时,metric 中文本反馈的质量决定优化能否收敛。

两条规则:其一,metric 返回 dspy.Prediction(score=..., feedback=...),不要返回 dict。dspy.Evaluate 的并行执行器用 sum 聚合分数,dict 输出会报 TypeError;dspy.Prediction 支持 float/add,也是 GEPA adapter 原生解包的对象。纯 dspy.Evaluate 打分可用裸 float,但 GEPA 需要 score+feedback 组合。其二,必须分离 valset,绝不在同一批样例上优化与评估,优化器会快速过拟合。

典型 rich-feedback metric 会计算多轴子分(正确性、是否引用来源、简洁度等)并加权求和,再按未达标项写出可教学的反馈文本,例如指出答案不匹配、未基于给定来源、超过 50 词等;全部达标则给出正向反馈。

评估框架用 dspy.Evaluate 配置 devset、metric、num_threads、display_progress、display_table、provide_traceback、max_errors、failure_score、save_as_json,调用后返回 EvaluationResult,含 .score 与 .results。

数据卫生方面:GEPA 反思循环 20–50 条样例足够,MIPROv2 式 bootstrapping 需 100–500 条;手工整理互不相交的 trainset 与 valset,最好留一个开发期不看 test set;代表性比规模更重要,应包含边界、歧义与对抗输入;用 with_inputs 标记输入字段。多轴 metric 建议组合正确性、忠实度、格式、延迟与成本,各轴 0–1 并有文字定义,权重写成常量而非魔法数字。

CI 就绪套件可用 pytest 固化评估器并断言 result.score 阈值,配合 cache=True 的缓存 LM 与预置 DSPY_CACHEDIR 离线运行。可观测性上,dspy.configure(track_usage=True) 累积 token;MLflow 用 mlflow.dspy.autolog();W&B 给 dspy.GEPA 传 use_wandb=True;始终用 save_as_json 记录版本化结果。

反模式:GEPA 下只用标量 metric;返回 dict;开放生成任务用精确匹配;在 trainset 上评估;provide_traceback=False 吞异常;实验中改 metric 不重新基线。下一步可将该 metric 交给 dspy-gepa-optimizer。