Class: DSPy::Teleprompt::GEPA::ReflectionResult

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dspy/teleprompt/gepa.rb

Overview

Immutable reflection analysis result using Ruby’s Data class Stores the output of GEPA’s reflective analysis on execution traces

Constant Summary collapse

ImprovementsList =

Type aliases for better type safety

T.type_alias { T::Array[String] }
MutationsList =
T.type_alias { T::Array[Symbol] }
MetadataHash =
T.type_alias { T::Hash[Symbol, T.untyped] }

Instance Method Summary collapse

Constructor Details

#initialize(trace_id:, diagnosis:, improvements:, confidence:, reasoning:, suggested_mutations:, metadata:) ⇒ ReflectionResult

Returns a new instance of ReflectionResult.



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/dspy/teleprompt/gepa.rb', line 180

def initialize(trace_id:, diagnosis:, improvements:, confidence:, reasoning:, suggested_mutations:, metadata:)
  # Validate confidence score
  if confidence < 0.0 || confidence > 1.0
    raise ArgumentError, "confidence must be between 0 and 1, got #{confidence}"
  end

  # Freeze nested structures for true immutability
  frozen_improvements = improvements.freeze
  frozen_mutations = suggested_mutations.freeze
   = .freeze

  super(
    trace_id: trace_id,
    diagnosis: diagnosis,
    improvements: frozen_improvements,
    confidence: confidence,
    reasoning: reasoning,
    suggested_mutations: frozen_mutations,
    metadata: 
  )
end

Instance Method Details

#actionable?Boolean

Returns:

  • (Boolean)


210
211
212
# File 'lib/dspy/teleprompt/gepa.rb', line 210

def actionable?
  improvements.any? || suggested_mutations.any?
end

#analysis_duration_msObject



260
261
262
# File 'lib/dspy/teleprompt/gepa.rb', line 260

def analysis_duration_ms
  [:analysis_duration_ms] || 0
end

#high_confidence?Boolean

Returns:

  • (Boolean)


204
205
206
# File 'lib/dspy/teleprompt/gepa.rb', line 204

def high_confidence?
  confidence >= 0.8
end

#mutation_priorityObject



216
217
218
# File 'lib/dspy/teleprompt/gepa.rb', line 216

def mutation_priority
  suggested_mutations.sort
end

#reflection_modelObject



248
249
250
# File 'lib/dspy/teleprompt/gepa.rb', line 248

def reflection_model
  [:reflection_model]
end

#summaryObject



236
237
238
239
240
241
242
243
244
# File 'lib/dspy/teleprompt/gepa.rb', line 236

def summary
  confidence_pct = (confidence * 100).round
  mutation_list = suggested_mutations.map(&:to_s).join(', ')
  
  "#{diagnosis.split('.').first}. " \
  "Confidence: #{confidence_pct}%. " \
  "#{improvements.size} improvements suggested. " \
  "Mutations: #{mutation_list}."
end

#to_hObject



222
223
224
225
226
227
228
229
230
231
232
# File 'lib/dspy/teleprompt/gepa.rb', line 222

def to_h
  {
    trace_id: trace_id,
    diagnosis: diagnosis,
    improvements: improvements,
    confidence: confidence,
    reasoning: reasoning,
    suggested_mutations: suggested_mutations,
    metadata: 
  }
end

#token_usageObject



254
255
256
# File 'lib/dspy/teleprompt/gepa.rb', line 254

def token_usage
  [:token_usage] || 0
end