SuperAPI AI 工具集

dspy-evaluate

测试与质量

查看项目

更新于 10-15 23:58

技能介绍

用途:用 dspy.Evaluate 在带标注的 devset 上逐条运行 DSPy 程序并打分,衡量 AI 质量,再把同一指标交给优化器。

主要能力:内置指标包括 answer_exact_match(归一化字符串相等,比较 example.answer 与 prediction.answer)、answer_passage_match(RAG 检索命中,检查 prediction.context 是否含 example.answer)、SemanticF1(token 级 F1,需 example 与 prediction 都有 response 字段,构造参数 threshold=0.66、decompositional=False)、CompleteAndGrounded(LM 判断完整性与有据性,需 prediction 的 response 与 context、example 的 question 与 response,构造参数 threshold=0.66)。自定义指标签名为 def metric(example, prediction, trace=None),返回 bool、int 或 float;trace 在评估时为 None、优化时被设置,可用于训练期更严格的要求。可做多字段评分、LM-as-judge、分级评分、复合加权指标与精确匹配加 LM 兜底的混合指标。

使用方式:from dspy.evaluate import Evaluate;evaluator = Evaluate(devset=devset, metric=metric, num_threads=4, display_table=5);score = evaluator(my_program)。返回 EvaluationResult,用 .score 取 0-100 百分比,用 .results 取 (example, prediction, score) 元组以定位失败样例。LM 评委可用 dspy.context(lm=judge_lm) 指定独立模型。

适用场景:事实型问答、结构化输出、RAG 检索命中率、开放式问答、RAG 忠实度与完整性,以及优化前后对比。

限制:指标必须返回 float 或 bool,返回字符串会静默破坏评分;不要传 return_all_scores 或 return_outputs;SemanticF1 需 response 而非 answer;CompleteAndGrounded 缺 context 无法检查有据性;devset 少于 30 条结果不稳定,建议 50 条以上;LM 评委每条样例每次评估消耗一次 LM 调用,优化时成本倍增,应先用最便宜的指标。安装:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。