SuperAPI AI 工具集

dspy-ensemble

智能体与模型

查看项目

更新于 10-15 23:58

技能介绍

用途:dspy.Ensemble 是 DSPy 的优化器(teleprompter),接收一组 DSPy 程序并返回单个 EnsembledProgram。调用时对同一输入运行各成员程序,再用你提供的 reduce 函数聚合结果。它不修改程序本身,只在推理时合并输出。

主要能力:支持多数投票(内置 dspy.majority)、数值平均、加权投票等自定义归约;可组合来自不同优化器(如 BootstrapFewShot、MIPROv2、BootstrapFewShotWithRandomSearch)的程序;size 参数可在推理时随机抽样部分程序以控制成本;reduce_fn=None 时返回原始预测列表,便于自行后处理。

用法:先配置 LM 并定义基础程序与训练集、度量,运行多次优化得到多个程序,再执行 ensemble = dspy.Ensemble(reduce_fn=dspy.majority, size=None); ensemble_program = ensemble.compile(programs),之后像普通模块一样调用。compile 必须传入 list[dspy.Module],即使只有两个程序也要用列表包裹。reduce_fn 接收 dspy.Prediction 列表,必须返回 Prediction 或兼容对象,不能返回纯字符串。deterministic 参数保留未实现,必须保持 False。

适用场景:多次优化后想取长补短;需要多数投票提升可靠性;需要平均分数或概率;不同优化器各有优势时。

限制:不适合只有一个程序、延迟敏感或成本受限的场景;结构化输出难以聚合时也不适用。集成会使成本与延迟按程序数(或 size)成倍增加。与 BestOfN 不同:Ensemble 组合不同程序,BestOfN 对同一程序多次采样并按奖励函数选优。安装:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。