dspy.COPRO
dspy.COPRO
dspy.COPRO는 프롬프트 지시문(instruction)을 반복적으로 개선하는 옵티마이저로, 여러 지시문을 생성하고 평가하며 최고의 지시문을 찾습니다.
출처: 문서
본문
dspy.COPRO(
prompt_model=None,
metric=None,
breadth=10,
depth=3,
init_temperature=1.4,
track_stats=False,
**_kwargs,
)
- Bases:
Teleprompter
소스 코드는 dspy/teleprompt/copro_optimizer.py에 있습니다.
def __init__(
self,
prompt_model=None,
metric=None,
breadth=10,
depth=3,
init_temperature=1.4,
track_stats=False,
**_kwargs,
):
if breadth <= 1:
raise ValueError("Breadth must be greater than 1")
self.metric = metric
self.breadth = breadth
self.depth = depth
self.init_temperature = init_temperature
self.prompt_model = prompt_model
self.track_stats = track_stats
Methods
compile(student, *, trainset, eval_kwargs=None)
student 프로그램의 signature를 최적화합니다. student는 zero-shot일 수도 있고 이미 최적화되어 데모가 선택된 상태(demos != [])일 수도 있습니다.
- parameters:
student— 최적화할 프로그램(그대로 수정됩니다).trainset—Example의 iterable.eval_kwargs— 선택적, dict, 기본값 None(추가 kwargs 없음). metric을 위한Evaluate에 들어갈 추가 키워드. - Returns:
student의 최적화된 버전.
소스 코드는 dspy/teleprompt/copro_optimizer.py에 있습니다.
COPRO는 zero-shot 지시문 하나로 시작해, 각 깊이(depth)에서 지시문 후보를 생성하고 평가합니다. 최상위 후보를 바탕으로 더 나은 지시문을 반복 생성하며, 최종적으로 가장 좋은 성능을 낸 지시문을 채택합니다.
def compile(self, student, *, trainset, eval_kwargs=None):
"""
optimizes `signature` of `student` program - note that it may be zero-shot or already pre-optimized (demos already chosen - `demos != []`)
parameters:
student: program to optimize and left modified.
trainset: iterable of `Example`s
eval_kwargs: optional, dict, defaults to None (no extra kwargs)
Additional keywords to go into `Evaluate` for the metric.
Returns optimized version of `student`.
"""
eval_kwargs = eval_kwargs or {}
module = student.deepcopy()
evaluate = Evaluate(devset=trainset, metric=self.metric, **eval_kwargs)
total_calls = 0
results_best = {
id(p): {"depth": [], "max": [], "average": [], "min": [], "std": []} for p in module.predictors()
}
results_latest = {
id(p): {"depth": [], "max": [], "average": [], "min": [], "std": []} for p in module.predictors()
}
candidates = {}
evaluated_candidates = defaultdict(dict)
# Seed the prompt optimizer zero shot with just the instruction, generate BREADTH new prompts
...
get_params() -> dict[str, Any]
텔레프롬프터의 파라미터를 반환합니다.