GEPA.Telemetry (GEPA v0.3.0)

Copy Markdown View Source

Telemetry helpers for GEPA.

Provides a stable event schema for lifecycle, iteration, proposal, and evaluation events. This keeps GEPA free of tracker-specific code while allowing external handlers to attach and forward to W&B, MLflow, etc.

Summary

Functions

emit_baseline(eval_batch, valset_size)

@spec emit_baseline(GEPA.EvaluationBatch.t(), non_neg_integer()) :: :ok

Emit baseline evaluation for the seed program.

emit_evaluation_batch(iteration, dataset, batch_size, duration_ms, scores, candidate_idx \\ nil, candidate_tag \\ nil)

@spec emit_evaluation_batch(
  non_neg_integer(),
  :train | :val,
  non_neg_integer(),
  integer(),
  [number()],
  non_neg_integer() | nil,
  String.t() | nil
) :: :ok

Emit evaluation batch event (train or val).

emit_iteration_start(iteration, selected_program_candidate)

@spec emit_iteration_start(non_neg_integer(), term()) :: :ok

Emit iteration start.

emit_iteration_stop(state, iteration, prev_best, accepted, subsample_before_sum, subsample_after_sum, proposal_tag, parent_program_ids, subsample_ids, iteration_duration_ms)

@spec emit_iteration_stop(
  GEPA.State.t(),
  non_neg_integer(),
  number(),
  boolean(),
  float(),
  float(),
  term(),
  [term()] | nil,
  [term()] | nil,
  integer()
) :: :ok

Emit iteration stop with performance metrics.

emit_proposal_decision(proposal, iteration, accepted, reason, subsample_delta, parent_ids)

@spec emit_proposal_decision(
  GEPA.CandidateProposal.t() | nil,
  non_neg_integer(),
  boolean(),
  atom(),
  float(),
  [term()] | nil
) :: :ok

Emit proposal decision (accepted/rejected).

emit_proposal_generated(proposal, iteration)

@spec emit_proposal_generated(GEPA.CandidateProposal.t(), non_neg_integer()) :: :ok

Emit proposal generation details.

emit_run_start(config)

@spec emit_run_start(map()) :: :ok

Emit run start with sanitized config and schema version.

emit_run_stop(state, run_start_ms)

@spec emit_run_stop(GEPA.State.t(), integer()) :: :ok

Emit run stop summary.

emit_valset_update(state, iteration, new_program_idx, val_scores)

@spec emit_valset_update(
  GEPA.State.t(),
  non_neg_integer(),
  non_neg_integer(),
  map()
) :: :ok

Emit valset update after accepting a program.

schema_version()

@spec schema_version() :: String.t()

Schema version for telemetry metadata.