Class: RubyLLM::Contract::Pipeline::Runner
- Inherits:
-
Object
- Object
- RubyLLM::Contract::Pipeline::Runner
- Includes:
- Concerns::UsageAggregator
- Defined in:
- lib/ruby_llm/contract/pipeline/runner.rb
Defined Under Namespace
Classes: ExecutionState
Instance Method Summary collapse
- #call(input) ⇒ Object
-
#initialize(steps:, context:, timeout_ms: nil, token_budget: nil) ⇒ Runner
constructor
A new instance of Runner.
- #run_steps(execution, start_time) ⇒ Object
Constructor Details
#initialize(steps:, context:, timeout_ms: nil, token_budget: nil) ⇒ Runner
Returns a new instance of Runner.
11 12 13 14 15 16 17 18 19 |
# File 'lib/ruby_llm/contract/pipeline/runner.rb', line 11 def initialize(steps:, context:, timeout_ms: nil, token_budget: nil) raise ArgumentError, "timeout_ms must be positive (got #{timeout_ms})" if timeout_ms && timeout_ms <= 0 raise ArgumentError, "Pipeline has no steps defined" if steps.empty? @steps = steps @context = context || {} @timeout_ms = timeout_ms @token_budget = token_budget end |
Instance Method Details
#call(input) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/ruby_llm/contract/pipeline/runner.rb', line 21 def call(input) execution = ExecutionState.new(input) start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) run_steps(execution, start_time) finalize_result(execution, start_time) end |
#run_steps(execution, start_time) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/ruby_llm/contract/pipeline/runner.rb', line 28 def run_steps(execution, start_time) @steps.each_with_index do |step_def, index| execute_step(step_def, execution) break if execution.failed? break if check_limits(index, step_def, execution, start_time) end end |