Class: RubyLLM::Contract::Step::Runner

Inherits:
Object
  • Object
show all
Includes:
LimitChecker
Defined in:
lib/ruby_llm/contract/step/runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(input_type:, output_type:, prompt_block:, contract_definition:, adapter:, model:, output_schema: nil, max_output: nil, max_input: nil, max_cost: nil, on_unknown_pricing: :refuse, temperature: nil, extra_options: {}, observers: []) ⇒ Runner

Returns a new instance of Runner.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ruby_llm/contract/step/runner.rb', line 9

def initialize(input_type:, output_type:, prompt_block:, contract_definition:,
               adapter:, model:, output_schema: nil, max_output: nil,
               max_input: nil, max_cost: nil, on_unknown_pricing: :refuse,
               temperature: nil, extra_options: {}, observers: [])
  @config = RunnerConfig.new(
    input_type: input_type,
    output_type: output_type,
    prompt_block: prompt_block,
    contract_definition: contract_definition,
    adapter: adapter,
    model: model,
    output_schema: output_schema,
    max_output: max_output,
    max_input: max_input,
    max_cost: max_cost,
    on_unknown_pricing: on_unknown_pricing,
    temperature: temperature,
    extra_options: extra_options,
    observers: observers
  )
end

Instance Method Details

#call(input) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ruby_llm/contract/step/runner.rb', line 31

def call(input)
  validated_input = input_validator.call(input)
  return validated_input if validated_input.is_a?(Result)

  messages = prompt_compiler.call(input)
rescue RubyLLM::Contract::Error => e
  Result.new(status: :input_error, raw_output: nil, parsed_output: nil,
             validation_errors: [e.message])
else
  execute_pipeline(messages, input)
end