dspy.Refine
dspy.Refine(module: Module, N: int, reward_fn: Callable[[dict, Prediction], float], threshold: float, fail_count: Optional[int] = None)
基类: Module
通过以不同的温度运行模块最多 N 次来优化它,并返回最佳预测。
此模块以不同的温度设置多次运行提供的模块,并选择第一个超过指定阈值的预测或奖励最高的预测。如果没有预测达到阈值,它会自动生成反馈以改进未来的预测。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
module
|
Module
|
要优化的模块。 |
必需 |
N
|
int
|
运行模块的次数。必须 |
必需 |
reward_fn
|
Callable
|
奖励函数。 |
必需 |
threshold
|
float
|
奖励函数的阈值。 |
必需 |
fail_count
|
可选[int]
|
模块在引发错误之前可以失败的次数 |
None
|
Example
import dspy
dspy.settings.configure(lm=dspy.LM("openai/gpt-4o-mini"))
# Define a QA module with chain of thought
qa = dspy.ChainOfThought("question -> answer")
# Define a reward function that checks for one-word answers
def one_word_answer(args, pred):
return 1.0 if len(pred.answer.split()) == 1 else 0.0
# Create a refined module that tries up to 3 times
best_of_3 = dspy.Refine(module=qa, N=3, reward_fn=one_word_answer, threshold=1.0)
# Use the refined module
result = best_of_3(question="What is the capital of Belgium?").answer
# Returns: Brussels
源代码位于 dspy/predict/refine.py
函数
__call__(*args, **kwargs)
源代码位于 dspy/primitives/program.py
acall(*args, **kwargs)
异步
源代码位于 dspy/primitives/program.py
batch(examples, num_threads: Optional[int] = None, max_errors: int = 10, return_failed_examples: bool = False, provide_traceback: Optional[bool] = None, disable_progress_bar: bool = False)
使用 Parallel 模块并行处理 dspy.Example 实例列表。
:param examples: 要处理的 dspy.Example 实例列表。 :param num_threads: 用于并行处理的线程数。 :param max_errors: 停止执行前允许的最大错误数。 :param return_failed_examples: 是否返回失败的示例和异常。 :param provide_traceback: 是否在错误日志中包含追溯信息。 :return: 结果列表,以及可选的失败示例和异常。
源代码位于 dspy/primitives/program.py
deepcopy()
深拷贝此模块。
这是对默认 Python 深拷贝的一个调整,它只深拷贝 self.parameters()
,对于其他属性,我们只进行浅拷贝。
源代码位于 dspy/primitives/module.py
dump_state()
forward(**kwargs)
源代码位于 dspy/predict/refine.py
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
|
get_lm()
load(path)
加载已保存的模块。如果想加载整个程序,而不仅仅是现有程序的状态,您可能还需要查看 dspy.load。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
path
|
str
|
保存状态文件的路径,应为 .json 或 .pkl 文件 |
必需 |
源代码位于 dspy/primitives/module.py
load_state(state)
map_named_predictors(func)
named_parameters()
与 PyTorch 不同,这也处理(非递归)参数列表。
源代码位于 dspy/primitives/module.py
named_predictors()
named_sub_modules(type_=None, skip_compiled=False) -> Generator[tuple[str, BaseModule], None, None]
查找模块中的所有子模块及其名称。
例如,self.children[4]['key'].sub_module 是一个子模块。则名称将是 'children[4][key].sub_module'。但如果子模块可以通过不同的路径访问,则只返回其中一条路径。
源代码位于 dspy/primitives/module.py
parameters()
predictors()
reset_copy()
save(path, save_program=False)
保存模块。
将模块保存到目录或文件。有两种模式: - save_program=False
:仅根据文件扩展名将模块状态保存到 json 或 pickle 文件。 - save_program=True
:通过 cloudpickle 将整个模块保存到目录,其中包含模型的状态和架构。
我们还保存了依赖版本,以便加载的模型可以检查关键依赖项或 DSPy 版本是否存在版本不匹配。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
path
|
str
|
保存状态文件的路径,当 |
必需 |
save_program
|
bool
|
如果为 True,则通过 cloudpickle 将整个模块保存到目录,否则仅保存状态。 |
False
|