Class: RubyLLM::Contract::Eval::ReportStorage
- Inherits:
-
Object
- Object
- RubyLLM::Contract::Eval::ReportStorage
- Defined in:
- lib/ruby_llm/contract/eval/report_storage.rb
Overview
Persists eval reports as history entries and regression baselines.
Instance Method Summary collapse
- #baseline_exists?(path: nil, model: nil, reasoning_effort: nil) ⇒ Boolean
- #compare_with_baseline(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
- #eval_history(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
-
#initialize(report:, stats:) ⇒ ReportStorage
constructor
A new instance of ReportStorage.
- #save_baseline!(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
- #save_history!(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
Constructor Details
#initialize(report:, stats:) ⇒ ReportStorage
Returns a new instance of ReportStorage.
11 12 13 14 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 11 def initialize(report:, stats:) @report = report @stats = stats end |
Instance Method Details
#baseline_exists?(path: nil, model: nil, reasoning_effort: nil) ⇒ Boolean
50 51 52 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 50 def baseline_exists?(path: nil, model: nil, reasoning_effort: nil) File.exist?(path || storage_path(Report::BASELINE_DIR, "json", model: model, reasoning_effort: reasoning_effort)) end |
#compare_with_baseline(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 37 def compare_with_baseline(path: nil, model: nil, reasoning_effort: nil) file = path || storage_path(Report::BASELINE_DIR, "json", model: model, reasoning_effort: reasoning_effort) raise ArgumentError, "No baseline found at #{file}" unless File.exist?(file) baseline_data = JSON.parse(File.read(file), symbolize_names: true) validate_baseline!(baseline_data) BaselineDiff.new( baseline_cases: baseline_data[:cases], current_cases: @report.results.map { |result| serialize_case(result) } ) end |
#eval_history(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
25 26 27 28 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 25 def eval_history(path: nil, model: nil, reasoning_effort: nil) EvalHistory.load(path || storage_path(Report::HISTORY_DIR, "jsonl", model: model, reasoning_effort: reasoning_effort)) end |
#save_baseline!(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 30 def save_baseline!(path: nil, model: nil, reasoning_effort: nil) file = path || storage_path(Report::BASELINE_DIR, "json", model: model, reasoning_effort: reasoning_effort) FileUtils.mkdir_p(File.dirname(file)) File.write(file, JSON.pretty_generate(serialize_for_baseline)) file end |
#save_history!(path: nil, model: nil, reasoning_effort: nil) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/ruby_llm/contract/eval/report_storage.rb', line 16 def save_history!(path: nil, model: nil, reasoning_effort: nil) file = path || storage_path(Report::HISTORY_DIR, "jsonl", model: model, reasoning_effort: reasoning_effort) entry = history_entry entry[:model] = model if model entry[:reasoning_effort] = reasoning_effort if reasoning_effort EvalHistory.append(file, entry) file end |