用途:提升 DSPy 程序输出质量,通过迭代精炼(dspy.Refine)与多次生成择优(dspy.BestOfN)配合自定义约束校验,解决格式、长度、内容等输出要求。
主要能力:dspy.Refine 在多次尝试中迭代改进输出;dspy.BestOfN 生成 N 个输出并选最佳;reward_fn 为可调用约束校验函数,返回 0.0-1.0 分数;支持多约束加权评分(如格式、长度、内容各占一定比例);可替代 DSPy 2.6+ 已弃用的 dspy.Assert/dspy.Suggest。
使用方式:先配置 LM,如 dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"));定义基础模块(如 dspy.ChainOfThought 或 dspy.Predict);编写 reward 函数接收 (args, pred) 并返回分数;再包装为 dspy.Refine(module=..., reward_fn=..., N=3, threshold=1.0) 或 dspy.BestOfN(module=..., reward_fn=..., N=5, threshold=1.0),调用后得到 dspy.Prediction。
适用场景:JSON 等结构化输出校验、字数或 token 长度限制、必须包含或避免特定内容、通过多次尝试提升质量。
限制:每次尝试增加一次 LLM 调用成本;reward 函数不接收反馈提示(不同于 GEPA);BestOfN 成本为 N 倍;无自动约束学习,需手动设计 reward;若基础模块本身错误,Refine 可能无法改善。官方文档:https://dspy.ai/ 与 https://github.com/stanfordnlp/dspy。