Skip to content

Commit f0e5a41

Browse files
remove legacy assertion code (#8546)
1 parent a122c16 commit f0e5a41

File tree

3 files changed

+9
-38
lines changed

3 files changed

+9
-38
lines changed

dspy/evaluate/evaluate.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class EvaluationResult(Prediction):
5151
- score: An float value (e.g., 67.30) representing the overall performance
5252
- results: a list of (example, prediction, score) tuples for each example in devset
5353
"""
54+
5455
def __init__(self, score: float, results: list[tuple["dspy.Example", "dspy.Example", Any]]):
5556
super().__init__(score=score, results=results)
5657

@@ -126,9 +127,9 @@ def __call__(
126127
127128
Returns:
128129
The evaluation results are returned as a dspy.EvaluationResult object containing the following attributes:
129-
130+
130131
- score: A float percentage score (e.g., 67.30) representing overall performance
131-
132+
132133
- results: a list of (example, prediction, score) tuples for each example in devset
133134
"""
134135
metric = metric if metric is not None else self.metric
@@ -145,25 +146,14 @@ def __call__(
145146
executor = ParallelExecutor(
146147
num_threads=num_threads,
147148
disable_progress_bar=not display_progress,
148-
max_errors=(
149-
self.max_errors
150-
if self.max_errors is not None
151-
else dspy.settings.max_errors
152-
),
149+
max_errors=(self.max_errors if self.max_errors is not None else dspy.settings.max_errors),
153150
provide_traceback=self.provide_traceback,
154151
compare_results=True,
155152
)
156153

157154
def process_item(example):
158155
prediction = program(**example.inputs())
159156
score = metric(example, prediction)
160-
161-
# Increment assert and suggest failures to program's attributes
162-
if hasattr(program, "_assert_failures"):
163-
program._assert_failures += dspy.settings.get("assert_failures")
164-
if hasattr(program, "_suggest_failures"):
165-
program._suggest_failures += dspy.settings.get("suggest_failures")
166-
167157
return prediction, score
168158

169159
results = executor.execute(process_item, devset)
@@ -191,7 +181,6 @@ def process_item(example):
191181
results=results,
192182
)
193183

194-
195184
def _construct_result_table(
196185
self, results: list[tuple["dspy.Example", "dspy.Example", Any]], metric_name: str
197186
) -> "pd.DataFrame":

dspy/teleprompt/bootstrap.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,6 @@ def compile(self, student, *, teacher=None, trainset):
8585
self.student = self._train()
8686
self.student._compiled = True
8787

88-
# set assert_failures and suggest_failures as attributes of student w/ value 0
89-
self.student._assert_failures = 0
90-
self.student._suggest_failures = 0
91-
9288
return self.student
9389

9490
def _prepare_student_and_teacher(self, student, teacher):
@@ -111,7 +107,9 @@ def _prepare_predictor_mappings(self):
111107
teacher.predictors(),
112108
), "Student and teacher must have the same number of predictors."
113109

114-
for (name1, predictor1), (name2, predictor2) in zip(student.named_predictors(), teacher.named_predictors(), strict=False):
110+
for (name1, predictor1), (name2, predictor2) in zip(
111+
student.named_predictors(), teacher.named_predictors(), strict=False
112+
):
115113
assert name1 == name2, "Student and teacher must have the same program structure."
116114
if hasattr(predictor1.signature, "equals"):
117115
assert predictor1.signature.equals(
@@ -210,11 +208,7 @@ def _bootstrap_one_example(self, example, round_idx=0):
210208
with self.error_lock:
211209
self.error_count += 1
212210
current_error_count = self.error_count
213-
effective_max_errors = (
214-
self.max_errors
215-
if self.max_errors is not None
216-
else dspy.settings.max_errors
217-
)
211+
effective_max_errors = self.max_errors if self.max_errors is not None else dspy.settings.max_errors
218212
if current_error_count >= effective_max_errors:
219213
raise e
220214
logger.error(f"Failed to run or to evaluate example {example} with {self.metric} due to {e}.")
@@ -244,7 +238,6 @@ def _bootstrap_one_example(self, example, round_idx=0):
244238

245239
# Update the traces
246240
for name, demos in name2traces.items():
247-
248241
# If there are multiple traces for the same predictor in the sample example,
249242
# sample 50/50 from the first N-1 traces or the last trace.
250243
if len(demos) > 1:

dspy/teleprompt/random_search.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,7 @@ def compile(self, student, *, teacher=None, trainset, valset=None, restrict=None
5858
self.trainset = trainset
5959
self.valset = valset or trainset # TODO: FIXME: Note this choice.
6060

61-
effective_max_errors = (
62-
self.max_errors
63-
if self.max_errors is not None
64-
else dspy.settings.max_errors
65-
)
61+
effective_max_errors = self.max_errors if self.max_errors is not None else dspy.settings.max_errors
6662

6763
scores = []
6864
all_subscores = []
@@ -129,13 +125,6 @@ def compile(self, student, *, teacher=None, trainset, valset=None, restrict=None
129125

130126
all_subscores.append(subscores)
131127

132-
############ Assertion-aware Optimization ############
133-
if hasattr(program, "_suggest_failures"):
134-
score = score - program._suggest_failures * 0.2
135-
if hasattr(program, "_assert_failures"):
136-
score = 0 if program._assert_failures > 0 else score
137-
######################################################
138-
139128
if len(scores) == 0 or score > max(scores):
140129
print("New best score:", score, "for seed", seed)
141130
best_program = program

0 commit comments

Comments
 (0)