Skip to content

Commit 28ceb70

Browse files
committed
refactor(gepa): remove ReAct trace workaround
Use standard trace selection logic (prioritizing failures) for all modules including ReAct. The extractor logic workaround is no longer needed as we handle aggregated duplicates differently.
1 parent f267ccc commit 28ceb70

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

dspy/teleprompt/gepa/gepa_utils.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -367,24 +367,16 @@ def make_reflective_dataset(
367367
if len(trace_instances) == 0:
368368
continue
369369

370-
# TODO: Workaround for ReAct's multiple predictor calls with partial trajectories.
371-
# Using last trace ensures full aggregated trajectory (same as extract predictor).
372-
# After PR #8999 merges (https://github.com/stanfordnlp/dspy/pull/8999), test if we can
373-
# remove this and use extract predictor trace directly like other modules traces.
374-
if pred_name.startswith(REACT_MODULE_PREFIX):
375-
selected = trace_instances[-1]
370+
selected = None
371+
for t in trace_instances:
372+
if isinstance(t[2], FailedPrediction):
373+
selected = t
374+
break
376375

377-
else:
378-
selected = None
379-
for t in trace_instances:
380-
if isinstance(t[2], FailedPrediction):
381-
selected = t
382-
break
383-
384-
if selected is None:
385-
if isinstance(prediction, FailedPrediction):
386-
continue
387-
selected = self.rng.choice(trace_instances)
376+
if selected is None:
377+
if isinstance(prediction, FailedPrediction):
378+
continue
379+
selected = self.rng.choice(trace_instances)
388380

389381
inputs = selected[1]
390382
outputs = selected[2]

0 commit comments

Comments
 (0)