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의 프롬프트 지시문에 반영합니다.