Class: Phronomy::Eval::Runner
- Inherits:
-
Object
- Object
- Phronomy::Eval::Runner
- Defined in:
- lib/phronomy/eval/runner.rb
Overview
Runs a Dataset through a callable and collects EvalResult objects.
The callable must respond to +#call(input)+ and may return either:
- a plain +String+ — treated as the output; usage is nil
- a +Hash+ with +:output+ and optional +:usage+ (TokenUsage) keys
Instance Method Summary collapse
-
#initialize(scorer: Scorer::ExactMatch.new) ⇒ Runner
constructor
A new instance of Runner.
- #run(dataset, callable) ⇒ Array<EvalResult>
Constructor Details
#initialize(scorer: Scorer::ExactMatch.new) ⇒ Runner
Returns a new instance of Runner.
21 22 23 |
# File 'lib/phronomy/eval/runner.rb', line 21 def initialize(scorer: Scorer::ExactMatch.new) @scorer = scorer end |
Instance Method Details
#run(dataset, callable) ⇒ Array<EvalResult>
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/phronomy/eval/runner.rb', line 28 def run(dataset, callable) dataset.map do |eval_case| t0 = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) result = callable.call(eval_case.input) latency_ms = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) - t0 actual, usage = extract(result) score = @scorer.score(actual: actual, expected: eval_case.expected, input: eval_case.input) EvalResult.new(eval_case: eval_case, actual: actual, score: score, usage: usage, latency_ms: latency_ms) end end |