dspy.BestOfN
dspy.BestOfN(module: Module, N: int, reward_fn: Callable[[dict, Prediction], float], threshold: float, fail_count: Optional[int] = None)
继承自: Module
使用不同的温度运行一个模块最多 N
次,并返回 N
次尝试中最佳的预测,或者第一个通过 threshold
的预测。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
module
|
Module
|
要运行的模块。 |
必需 |
N
|
int
|
模块运行的次数。 |
必需 |
reward_fn
|
Callable[[dict, Prediction], float]
|
奖励函数,接收传递给模块的参数和生成的预测,并返回一个标量奖励值。 |
必需 |
threshold
|
float
|
奖励函数的阈值。 |
必需 |
fail_count
|
Optional[int]
|
模块在引发错误前可以失败的次数。如果未提供,默认为 N。 |
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.BestOfN(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/best_of_n.py
函数
__call__(*args, **kwargs)
源代码位于 dspy/primitives/program.py
acall(*args, **kwargs)
async
源代码位于 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/best_of_n.py
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
|