用途:dspy.InferRules 用于从带标签示例中提取显式、人类可读的决策规则,并将规则注入程序指令,适合分类、路由、审核、分诊等具有一致可描述规则的任务,以及需要向相关方或审计解释决策的场景。
主要能力:它继承自 BootstrapFewShot,先引导演示样本,再从演示中归纳自然语言规则;可生成多个候选程序并在验证集上选优;规则直接追加到各预测器的 signature 指令;当示例超出语言模型上下文窗口时会迭代移除示例。
使用方式:需要 DSPy 程序、度量函数和训练集。示例:dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"));定义 classify = dspy.ChainOfThought("text -> label");定义度量 exact_match;准备 dspy.Example 训练数据;然后 optimizer = dspy.InferRules(metric=exact_match, num_rules=10);compiled = optimizer.compile(classify, trainset=trainset)。可用 compiled.named_predictors() 查看注入的指令。构造参数包括 num_candidates(默认10)、num_rules(默认10)、num_threads、teacher_settings,以及通过 kwargs 传入的 metric 和 max_errors。compile 接受 student、trainset 和可选 valset;未提供 valset 时自动按 50/50 划分。可用 compiled.save 与 load 保存加载。
适用场景:规则需可读、可审计、可编辑的受监管行业;调试优化器所学内容;人工在环修正规则;将规则作为系统行为说明文档。
限制:示例过少(少于约20条)时规则难以泛化;无一致模式的任务(创意写作、开放式生成)不适用;仅需微调少样本示例应使用 dspy.BootstrapFewShot;需要完整提示与示例优化用 dspy.MIPROv2;需要权重调优用 dspy.BootstrapFinetune。规则过多可能超出上下文或产生矛盾,建议从默认值开始并根据验证分数调整。具体收费、价格与平台信息暂未提供。