unstale

pypi / gepa

gepa

What changed in gepa 0.1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-26.

5 breaking25 new APIs and options9 behavior and defaults7 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.7 on npm

gepa 0.146 changes

Breaking changes 5

  • The experimental parameter is removed; use sampling_strategy such as SameParentSampling or PxNSampling instead.

    0.1.4release notes

  • Using it with a reflection_strategy that does not expose total_cost now raises instead of silently never stopping.

    0.1.4release notes

  • Combining it with adapter.propose_new_texts or custom_candidate_proposer now raises ValueError instead of silently ignoring the conflicting configuration.

    0.1.4release notes

  • The litellm floor is raised to at least 1.83 when installing gepa[full] to address Dependabot alerts.

    0.1.2release notes

  • Now defaults to True, retaining best outputs on the result object; pass False to restore the old behavior and reduce memory use for large validation sets.

    0.1.2release notesrelease notes

New APIs and options 25

  • Adds an optional adapter seam for batching multi-proposal evaluations; adapters implementing only evaluate() continue to use sequential fallback.

    0.1.4release notes

  • Lets optimize_anything evaluate all pending candidate-example pairs in one external call, with caching, warm-start injection, exception policy, and standard output packaging.

    0.1.4release notes

  • Accepts a custom ReflectionLM implementation in optimize or ReflectionConfig to control the reflection step.

    0.1.4release notes

  • A protocol for custom reflection implementations, allowing developers to control reflective mutation calls and implement stateful reflectors.

    0.1.4release notes

  • Adds a diagnostics metadata channel for multi-call reflectors that flows through callbacks, trackers, and proposal metadata.

    0.1.4release notes

  • Acceptance criteria may implement this hook to provide custom rejection messages.

    0.1.4release notes

  • Chooses the parent and minibatch tasks for multi-proposal iterations; available strategies include SingleMutationSampling, SameParentSampling, IndependentSampling, and PxNSampling.

    0.1.4release notes

  • Chooses which proposal improvements enter the pool, with built-in strategies for all, best, or top-k improvements.

    0.1.4release notes

  • Adds a tracker metric for the score after subsampling.

    0.1.4release notes

  • Adds a tracker metric for the score before subsampling.

    0.1.4release notes

  • Adds a pluggable acceptance criterion, with strict_improvement and improvement_or_equal choices or a custom AcceptanceCriterion.

    0.1.3release notes

  • Optimize LangChain/LangGraph applications directly with gepa.optimize; install the langchain extra.

    0.1.3release notes

  • Adds strict_improvement and improvement_or_equal as selectable acceptance criteria.

    0.1.2release notes

  • Allows passing a custom acceptance criterion for reflective mutation.

    0.1.2release notes

  • Adds logprob-aware scoring and reflection for classification tasks.

    0.1.2release notesrelease notes

  • Experimental option for generating and evaluating multiple candidate proposals per optimize_anything iteration; the interface is expected to change.

    0.1.2release notesrelease notes

  • Adds adapter_state so adapters can persist state across checkpoint and resume.

    0.1.2release notesrelease notes

  • Exposes trainset_loader for datasets that change during optimization.

    0.1.2release notesrelease notes

  • Optimize LangChain/LangGraph applications directly with gepa.optimize; install the gepa[langchain] extra.

    0.1.2release notes

  • Adds a budget knob for controlling reflection cost.

    0.1.2release notesrelease notes

  • Logs into an already-active MLflow run without GEPA managing its lifecycle.

    0.1.2release notesrelease notes

  • The callback exposes reflection LM prompts and outputs.

    0.1.2release notes

  • The unified LM layer adds first-class handling of reasoning models as reflection LMs.

    0.1.2release notesrelease notes

  • Passes provider-specific parameters to the reflection model.

    0.1.2release notesrelease notes

  • Logs into an already-active WandB run without GEPA managing its lifecycle.

    0.1.2release notesrelease notes

Behavior and default changes 9

  • Stop conditions are checked between iterations, so multi-proposal strategies can exceed max_metric_calls by up to one iteration's evaluations.

    0.1.4release notes

  • Becomes optional when batch_evaluator is provided; evaluations, including refiner steps, route through the batch function.

    0.1.4release notes

  • Entries now include per-task ids and before/after scores, task count, accepted program indices, and stable proposal ids while preserving legacy keys.

    0.1.4release notes

  • Fires per evaluation stage with self-consistent deltas; aggregate metric_calls_delta rather than counting events.

    0.1.4release notes

  • Merge proposals now fire GEPACallback events.

    0.1.4release notes

  • Selection strategies now receive all evaluated proposals and the acceptance criterion; custom strategies may surface proposals rejected by that criterion.

    0.1.4release notes

  • Run directories written by v0.1.1 are migrated automatically on load; state written by v0.1.2 is not designed to load in v0.1.1.

    0.1.3release notes

  • Reflection prompts and outputs are logged to a proposals table for run archaeology.

    0.1.2release notesrelease notes

  • Run directories written by v0.1.1 are migrated automatically on load; v0.1.2 state is not designed to load in v0.1.1.

    0.1.2release notes

Fixes and other changes 7

  • Criteria are evaluated exactly once per proposal, with results memoized so stateful or stochastic criteria behave correctly.

    0.1.4release notes

  • Identical child candidates within an iteration are deduplicated before valset evaluation.

    0.1.4release notes

  • Now fires for every unselected proposal with a reason identifying acceptance failure, selection drop, or duplication.

    0.1.4release notes

  • No longer hides batch_complete from wrapped callables that provide it, preventing batched reflection from being silently downgraded.

    0.1.4release notes

  • Fixes a crash when outputs=None and a reflection_lm type mismatch.

    0.1.2release notesrelease notes

  • The callback protocol now works in optimize_anything runs, as well as gepa.optimize runs.

    0.1.2release notesrelease notes

  • Refiner evaluator calls are now counted toward the metric-call budget.

    0.1.2release notes