dspy.InferRules

dspy.InferRules

dspy.InferRules는 부트스트랩 데모에서 자연어 규칙(rule)을 유도(induce)하고, 그것을 predictor의 프롬프트 지시문으로 반영하는 옵티마이저입니다. BootstrapFewShot을 상속받아 동작합니다.

출처: 문서

본문

dspy.InferRules(
    num_candidates=10,
    num_rules=10,
    num_threads=None,
    teacher_settings=None,
    **kwargs,
)
  • Bases: BootstrapFewShot(metric=None, metric_threshold=None, teacher_settings=None, max_bootstrapped_demos=4, max_labeled_demos=16, max_rounds=1, max_errors=None)

소스 코드는 dspy/teleprompt/infer_rules.py에 있습니다.

def __init__(self, num_candidates=10, num_rules=10, num_threads=None, teacher_settings=None, **kwargs):
    super().__init__(teacher_settings=teacher_settings, **kwargs)

    self.num_candidates = num_candidates
    self.num_rules = num_rules
    self.num_threads = num_threads
    self.rules_induction_program = RulesInductionProgram(num_rules, teacher_settings=teacher_settings)
    self.metric = kwargs.get("metric")
    self.max_errors = kwargs.get("max_errors")

Methods

compile(student, *, teacher=None, trainset, valset=None)

소스 코드는 dspy/teleprompt/infer_rules.py에 있습니다.

compile은 trainset을 학습/검증으로 나누고, 먼저 BootstrapFewShot으로 데모를 부트스트랩합니다. 그다음 데모에서 자연어 규칙을 유도해 predictor의 프롬프트 지시문에 반영하고, 성능이 가장 좋은 설정을 선택합니다.

def compile(self, student, *, teacher=None, trainset, valset=None):
    if valset is None:
        train_size = int(0.5 * len(trainset))
        trainset, valset = trainset[:train_size], trainset[train_size:]

    super().compile(student, teacher=teacher, trainset=trainset)

    original_program = self.student.deepcopy()
    all_predictors = [p for p in original_program.predictors() if hasattr(p, "signature")]
    instructions_list = [p.signature.instructions for p in all_predictors]

    best_score = -math.inf
    ...

evaluate_program(program, dataset)

주어진 데이터셋에서 프로그램을 평가합니다.

format_examples(demos, signature)

데모를 프롬프트용 형식으로 변환합니다.

get_params() -> dict[str, Any]

텔레프롬프터의 파라미터를 반환합니다.

get_predictor_demos(trainset, predictor)

특정 predictor에 사용할 데모를 trainset에서 선택합니다.

induce_natural_language_rules(predictor, trainset)

predictor의 데모를 바탕으로 자연어 규칙을 유도합니다.

update_program_instructions(predictor, natural_language_rules)

유도한 자연어 규칙을 predictor의 프롬프트 지시문에 반영합니다.

더 알아보기 (Learn more)