Migrate DSPy GEPA usage in DSPy from the original to gepa-observable. This makes it possible for teams to clearly review each iteration and the lineage to understand how their prompt is evolving. The repository offers a web dashboard for monitoring, but requires a custom GEPA fork that provides custom observers and LM call logging. Use when developers want to add observability to GEPA optimization.
Installation
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Migrate DSPy GEPA usage in DSPy from the original to gepa-observable. This makes it possible for teams to clearly review each iteration and the lineage to understand how their prompt is evolving. The repository offers a web dashboard for monitoring, but requires a custom GEPA fork that provides custom observers and LM call logging. Use when developers want to add observability to GEPA optimization.
Migrate DSPy GEPA to gepa-observable
Migrate existing DSPy GEPA code to gepa-observable for integrated observability:
real-time dashboard, custom observer callbacks, and LM call capture working together.
gepa-observable provides an integrated observability system where all components work together:
Component
Purpose
Enabled By
ServerObserver
Sends events to web dashboard
server_url param
LoggingObserver
Console output with summaries
verbose=True
LM Call Logger
Captures all LM invocations
capture_lm_calls=True
Custom Observers
Your callbacks for any event
observers=[...]
All observers receive the same 8 lifecycle events:
SeedValidationEvent - Initial validation scores
IterationStartEvent - Each optimization iteration
MiniBatchEvalEvent - Minibatch evaluations
ReflectionEvent - Proposed prompt changes
AcceptanceDecisionEvent - Accept/reject decisions
ValsetEvalEvent - Full validation evaluations
MergeEvent - Candidate merge operations
OptimizationCompleteEvent - Final results
Custom Observer Example
classMyObserver:
defon_seed_validation(self, event):
avg = sum(event.valset_scores.values()) / len(event.valset_scores)
print(f"Seed score: {avg:.2%}")
defon_iteration_start(self, event):
print(f"Iteration {event.iteration}, parent score: {event.parent_score:.2%}")
defon_reflection(self, event):
for comp, text in event.proposed_texts.items():
print(f"Proposing for {comp}: {text[:100]}...")
defon_valset_eval(self, event):
if event.is_new_best:
print(f"NEW BEST: {event.valset_score:.2%}")
defon_optimization_complete(self, event):
print(f"Done! Best: {event.best_score:.2%} in {event.total_iterations} iters")
# Use with other observers - they all work together
optimizer = GEPA(
metric=my_metric,
auto="medium",
server_url="http://localhost:3000",
observers=[MyObserver()],
verbose=True, # Also keep LoggingObserver
)
Migration Checklist
For Notebooks
Install: pip install dspy-gepa-logger
Change import: from gepa_observable import GEPA
Add server_url for dashboard
Add custom observers if needed
Run cells in order - API is 100% compatible
For Scripts
Install: pip install dspy-gepa-logger
Find all from dspy.teleprompt import GEPA
Replace import
Add observability parameters to GEPA constructor
No other changes needed
References
references/api-reference.md - Complete parameter docs, observer protocol, all event types
references/examples.md - Full before/after code examples