Class: Raif::Evals::Run
- Inherits:
-
Object
- Object
- Raif::Evals::Run
- Defined in:
- lib/raif/evals/run.rb
Instance Attribute Summary collapse
-
#eval_sets ⇒ Object
readonly
Returns the value of attribute eval_sets.
-
#output ⇒ Object
readonly
Returns the value of attribute output.
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(file_paths: nil, output: $stdout) ⇒ Run
constructor
A new instance of Run.
Constructor Details
#initialize(file_paths: nil, output: $stdout) ⇒ Run
Returns a new instance of Run.
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/raif/evals/run.rb', line 11 def initialize(file_paths: nil, output: $stdout) @output = output @results = {} @eval_sets = if file_paths&.any? load_eval_sets_from_files(file_paths) else discover_eval_sets end end |
Instance Attribute Details
#eval_sets ⇒ Object (readonly)
Returns the value of attribute eval_sets.
9 10 11 |
# File 'lib/raif/evals/run.rb', line 9 def eval_sets @eval_sets end |
#output ⇒ Object (readonly)
Returns the value of attribute output.
9 10 11 |
# File 'lib/raif/evals/run.rb', line 9 def output @output end |
#results ⇒ Object (readonly)
Returns the value of attribute results.
9 10 11 |
# File 'lib/raif/evals/run.rb', line 9 def results @results end |
Instance Method Details
#execute ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/raif/evals/run.rb', line 22 def execute # Load setup file if it exists setup_file = Rails.root.join("raif_evals", "setup.rb") if File.exist?(setup_file) require setup_file else output.puts Raif::Utils::Colors.red("\n\nNo setup file found. To set up Raif evals, run:\n") output.puts Raif::Utils::Colors.red("bundle exec raif evals:setup\n") exit 1 end output.puts "\nStarting Raif Eval Run" output.puts "" output.puts "Raif.config.default_llm_model_key: #{Raif.config.default_llm_model_key}" output.puts "Raif.config.evals_default_llm_judge_model_key: #{Raif.config.evals_default_llm_judge_model_key}" output.puts "" output.puts "=" * 50 @eval_sets.each do |eval_set_entry| eval_set_class, file_path, line_number = if eval_set_entry.is_a?(Hash) [eval_set_entry[:class], eval_set_entry[:file_path], eval_set_entry[:line_number]] else [eval_set_entry, nil, nil] end if line_number # Running specific eval by line number output.puts "\nRunning #{eval_set_class.name} at line #{line_number}" output.puts "-" * 50 eval_results = run_eval_at_line(eval_set_class, file_path, line_number) else # Running all evals in the set output.puts "\nRunning #{eval_set_class.name}" output.puts "-" * 50 eval_results = eval_set_class.run(output: output) end @results[eval_set_class.name] = eval_results.map(&:to_h) passed_count = eval_results.count(&:passed?) total_count = eval_results.count output.puts "-" * 50 output.puts "#{eval_set_class.name}: #{passed_count}/#{total_count} evals passed" end export_results print_summary end |