dspy.MIPROv2

dspy.MIPROv2

MIPROv2(_M_ultiprompt _I_nstruction _PR_oposal _O_ptimizer Version 2)는 지시문(instruction)과 few-shot 예시를 함께 최적화할 수 있는 프롬프트 옵티마이저입니다. few-shot 예시 후보를 부트스트랩하고, 작업의 다양한 동력(dynamics)에 기반한 지시문을 제안하며, 베이지안 최적화(Bayesian Optimization)로 이 옵션들의 최적 조합을 찾습니다. few-shot 예시와 지시문을 함께 최적화하거나, 0-shot 최적화를 위해 지시문만 최적화하는 데 사용할 수 있습니다.

출처: 문서

본문

dspy.MIPROv2(
    metric: Callable,
    prompt_model: Any | None = None,
    task_model: Any | None = None,
    teacher_settings: dict | None = None,
    max_bootstrapped_demos: int = 4,
    max_labeled_demos: int = 4,
    auto: Literal['light', 'medium', 'heavy'] | None = 'light',
    num_candidates: int | None = None,
    num_threads: int | None = None,
    max_errors: int | None = None,
    seed: int = 9,
    init_temperature: float = 1.0,
    verbose: bool = False,
    track_stats: bool = True,
    log_dir: str | None = None,
    metric_threshold: float | None = None,
)
  • Bases: Teleprompter

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

__init__은 auto 파라미터를 검증합니다. 허용 모드는 {None, "light", "medium", "heavy"}이며, 벗어나면 ValueError를 발생시킵니다. prompt_model과 task_model이 모두 없으면 dspy.configure(lm=...)로 기본 LM을 설정하라는 ValueError가 발생합니다.

def __init__(
    self,
    metric: Callable,
    prompt_model: Any | None = None,
    task_model: Any | None = None,
    teacher_settings: dict | None = None,
    max_bootstrapped_demos: int = 4,
    max_labeled_demos: int = 4,
    auto: Literal["light", "medium", "heavy"] | None = "light",
    num_candidates: int | None = None,
    num_threads: int | None = None,
    max_errors: int | None = None,
    seed: int = 9,
    init_temperature: float = 1.0,
    verbose: bool = False,
    track_stats: bool = True,
    log_dir: str | None = None,
    metric_threshold: float | None = None,
):
    # Validate 'auto' parameter
    allowed_modes = {None, "light", "medium", "heavy"}
    if auto not in allowed_modes:
        raise ValueError(f"Invalid value for auto: {auto}. Must be one of {allowed_modes}.")
    self.auto = auto
    self.num_fewshot_candidates = num_candidates
    self.num_instruct_candidates = num_candidates
    self.num_candidates = num_candidates
    self.metric = metric
    self.init_temperature = init_temperature
    self.task_model = task_model if task_model else dspy.settings.lm
    self.prompt_model = prompt_model if prompt_model else dspy.settings.lm
    ...
    if not self.prompt_model or not self.task_model:
        raise ValueError("Either provide both prompt_model and task_model or set a default LM through dspy.configure(lm=...)")

Methods

compile(student, *, trainset, teacher=None, valset=None, num_trials=None, ...) -> Any

def compile(
    self,
    student: Any,
    *,
    trainset: list,
    teacher: Any = None,
    valset: list | None = None,
    num_trials: int | None = None,
    max_bootstrapped_demos: int | None = None,
    max_labeled_demos: int | None = None,
    seed: int | None = None,
    minibatch: bool = True,
    minibatch_size: int = 35,
    minibatch_full_eval_steps: int = 5,
    program_aware_proposer: bool = True,
    data_aware_proposer: bool = True,
    view_data_batch_size: int = 10,
    tip_aware_proposer: bool = True,
    fewshot_aware_proposer: bool = True,
    requires_permission_to_run: bool | None = None, # deprecated
    provide_traceback: bool | None = None,
) -> Any:
    ...

compile은 teacher로 few-shot 예시 후보를 부트스트랩하고, 다양한 proposer(program-aware, data-aware, tip-aware, fewshot-aware)로 지시문 후보를 제안한 뒤, 베이지안 최적화로 최적의 (지시문, 예시) 조합을 탐색합니다. num_trials(기본값은 auto 모드에서 결정)만큼 시도해 가장 좋은 성능을 내는 프로그램을 반환합니다.

  • requires_permission_to_run은 deprecated이며, 허용 여부를 묻지 않고 실행됩니다.

get_params() -> dict[str, Any]

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

더 알아보기 (Learn more)