Class: RLM::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/rlm/result.rb

Constant Summary collapse

STATUSES =
%i[
  completed
  needs_review
  failed_validation
  budget_exceeded
  sandbox_error
  tool_error
  provider_error
  aborted
].freeze
FAILURE_STATUSES =
%i[
  failed_validation
  budget_exceeded
  sandbox_error
  tool_error
  provider_error
  aborted
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(trace:, status:, output: nil, error: nil, cost_cents: 0, duration_ms: 0, llm_calls: 0, iterations: 0, validation_errors: []) ⇒ Result

Returns a new instance of Result.

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/rlm/result.rb', line 28

def initialize(
  trace:,
  status:,
  output: nil,
  error: nil,
  cost_cents: 0,
  duration_ms: 0,
  llm_calls: 0,
  iterations: 0,
  validation_errors: []
)
  raise ArgumentError, "Unknown status: #{status.inspect}" unless STATUSES.include?(status)

  @output = output
  @trace = trace
  @status = status
  @error = error
  @cost_cents = cost_cents
  @duration_ms = duration_ms
  @llm_calls = llm_calls
  @iterations = iterations
  @validation_errors = validation_errors
end

Instance Attribute Details

#cost_centsObject (readonly)

Returns the value of attribute cost_cents.



25
26
27
# File 'lib/rlm/result.rb', line 25

def cost_cents
  @cost_cents
end

#duration_msObject (readonly)

Returns the value of attribute duration_ms.



25
26
27
# File 'lib/rlm/result.rb', line 25

def duration_ms
  @duration_ms
end

#errorObject (readonly)

Returns the value of attribute error.



25
26
27
# File 'lib/rlm/result.rb', line 25

def error
  @error
end

#iterationsObject (readonly)

Returns the value of attribute iterations.



25
26
27
# File 'lib/rlm/result.rb', line 25

def iterations
  @iterations
end

#llm_callsObject (readonly)

Returns the value of attribute llm_calls.



25
26
27
# File 'lib/rlm/result.rb', line 25

def llm_calls
  @llm_calls
end

#outputObject (readonly)

Returns the value of attribute output.



25
26
27
# File 'lib/rlm/result.rb', line 25

def output
  @output
end

#statusObject (readonly)

Returns the value of attribute status.



25
26
27
# File 'lib/rlm/result.rb', line 25

def status
  @status
end

#traceObject (readonly)

Returns the value of attribute trace.



25
26
27
# File 'lib/rlm/result.rb', line 25

def trace
  @trace
end

#validation_errorsObject (readonly)

Returns the value of attribute validation_errors.



25
26
27
# File 'lib/rlm/result.rb', line 25

def validation_errors
  @validation_errors
end

Instance Method Details

#failed?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/rlm/result.rb', line 60

def failed?
  FAILURE_STATUSES.include?(status)
end

#needs_review?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/rlm/result.rb', line 56

def needs_review?
  status == :needs_review
end

#success?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/rlm/result.rb', line 52

def success?
  status == :completed
end

#to_hObject



64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/rlm/result.rb', line 64

def to_h
  {
    output: output,
    status: status,
    error: error&.message,
    cost_cents: cost_cents,
    duration_ms: duration_ms,
    llm_calls: llm_calls,
    iterations: iterations,
    validation_errors: validation_errors,
    trace_id: trace&.id
  }
end