class Riffer::Evals::Evaluator
rbs_inline: enabled
Constants
- DEFAULT_IDENTIFIER
-
@rbs self.@instructions: String? @rbs self.@higher_is_better: bool? @rbs self.@judge_model: String? @rbs self.@identifier: String? @rbs @judge: Riffer::Evals::Judge?
Public Class Methods
Source
# File lib/riffer/evals/evaluator.rb, line 24 def higher_is_better(value = nil) if value.nil? current = @higher_is_better return true if current.nil? return current end @higher_is_better = value end
Source
# File lib/riffer/evals/evaluator.rb, line 44 def identifier(value = nil) return @identifier = value.to_s if value @identifier || derived_identifier end
Source
# File lib/riffer/evals/evaluator.rb, line 16 def instructions(value = nil) return @instructions if value.nil? @instructions = value.to_s end
Source
# File lib/riffer/evals/evaluator.rb, line 36 def judge_model(value = nil) return @judge_model if value.nil? @judge_model = value.to_s end
Public Instance Methods
Source
# File lib/riffer/evals/evaluator.rb, line 63 def evaluate(input:, output:, ground_truth: nil, messages: []) instr = self.class.instructions raise NotImplementedError, "#{self.class} must set instructions or implement #evaluate" unless instr evaluation = judge.evaluate( instructions: instr, input: format_input(input), output: output, ground_truth: ground_truth, ) result(score: evaluation[:score], reason: evaluation[:reason], token_usage: evaluation[:token_usage]) end
Protected Instance Methods
Source
# File lib/riffer/evals/evaluator.rb, line 101 def judge @judge ||= begin model = self.class.judge_model || Riffer.config.evals.judge_model unless model raise Riffer::ArgumentError, "No judge model configured. Set judge_model on the evaluator or Riffer.config.evals.judge_model" end Riffer::Evals::Judge.new(model: model, tags: { "kind" => "judge", "agent" => self.class.identifier }) end end
Source
# File lib/riffer/evals/evaluator.rb, line 115 def result(score:, reason: nil, metadata: {}, token_usage: nil) Riffer::Evals::Result.new( evaluator: self.class, score: score, reason: reason, metadata: metadata, higher_is_better: self.class.higher_is_better, token_usage: token_usage, ) end