SuperAPI AI 工具集

dspy-best-of-n

测试与质量

查看项目

更新于 10-15 23:58

技能介绍

用途:dspy.BestOfN 用于输出质量波动较大的场景。它包装任意 DSPy 模块,最多运行 N 次(temperature=1.0,每次使用不同 rollout ID 以获得多样输出),用 reward_fn 为每次结果打分,返回分数最高的预测。若某次达到设定的 threshold 则提前停止。

主要能力:构造参数为 module、N、reward_fn、threshold、fail_count。reward_fn 签名为 (args_dict, prediction) -> float,与 dspy.Evaluate 的 (example, prediction, trace) 不同,args 只含传入输入,没有金标签;失败次数超过 fail_count 会抛错。

使用方式:先配置 dspy.LM,定义模块,编写奖励函数,再以 dspy.BestOfN(module=qa, N=3, reward_fn=..., threshold=1.0) 包装并像普通模块一样调用。示例中奖励函数根据答案是否为单个单词返回 1.0 或 0.0。安装该技能可运行 npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill dspy-best-of-n。

适用场景:有便宜快速的自动评分(测试通过、正则匹配、词数检查等);质量差异高;愿意花 token 换取质量提升;可在完整优化前做快速增强。也可先优化模块再叠加 BestOfN。

限制:必须有能自动给分的指标;N 次调用会增加延迟与成本(弱提前停止时最多 N 倍 token);N 过大收益递减;若奖励函数本身调用 LM,成本会进一步翻倍。资料未提供价格、平台支持等具体信息。