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]
텔레프롬프터의 파라미터를 반환합니다.