Class: RubyLLM::Contract::Step::ResultBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/contract/step/result_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(contract_definition:, output_type:, output_schema:, model:, observers:) ⇒ ResultBuilder

Returns a new instance of ResultBuilder.



7
8
9
10
11
12
13
# File 'lib/ruby_llm/contract/step/result_builder.rb', line 7

def initialize(contract_definition:, output_type:, output_schema:, model:, observers:)
  @contract_definition = contract_definition
  @output_type = output_type
  @output_schema = output_schema
  @model = model
  @observers = observers
end

Instance Method Details

#error_result(error_result:, messages:) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/ruby_llm/contract/step/result_builder.rb', line 15

def error_result(error_result:, messages:)
  Result.new(
    status: error_result.status,
    raw_output: error_result.raw_output,
    parsed_output: error_result.parsed_output,
    validation_errors: error_result.validation_errors,
    trace: Trace.new(messages: messages, model: @model)
  )
end

#success_result(response:, messages:, latency_ms:, input:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ruby_llm/contract/step/result_builder.rb', line 25

def success_result(response:, messages:, latency_ms:, input:)
  raw_output = response.content
  validation_result = validate_output(raw_output, input)
  trace = Trace.new(messages: messages, model: @model, latency_ms: latency_ms, usage: response.usage)

  Result.new(
    status: validation_result[:status],
    raw_output: raw_output,
    parsed_output: validation_result[:parsed_output],
    validation_errors: validation_result[:errors],
    trace: trace,
    observations: observations_for(validation_result, input)
  )
end