Class: RubyLLM::Contract::Eval::Dataset

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/contract/eval/dataset.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name = "unnamed", &block) ⇒ Dataset

Returns a new instance of Dataset.



9
10
11
12
13
# File 'lib/ruby_llm/contract/eval/dataset.rb', line 9

def initialize(name = "unnamed", &block)
  @name = name
  @cases = []
  instance_eval(&block) if block
end

Instance Attribute Details

#casesObject (readonly)

Returns the value of attribute cases.



7
8
9
# File 'lib/ruby_llm/contract/eval/dataset.rb', line 7

def cases
  @cases
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/ruby_llm/contract/eval/dataset.rb', line 7

def name
  @name
end

Class Method Details

.define(name = "unnamed") ⇒ Object



15
16
17
# File 'lib/ruby_llm/contract/eval/dataset.rb', line 15

def self.define(name = "unnamed", &)
  new(name, &)
end

Instance Method Details

#add_case(name = nil, input:, expected: nil, expected_traits: nil, evaluator: nil, step_expectations: nil) ⇒ Object

DSL: define a test case dataset.case “name”, input: …, expected: … dataset.case “name”, input: …, expected_traits: … dataset.case “name”, input: …, evaluator: proc



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_llm/contract/eval/dataset.rb', line 25

def add_case(name = nil, input:, expected: nil, expected_traits: nil, evaluator: nil, step_expectations: nil)
  case_name = name || "case_#{@cases.length + 1}"
  if @cases.any? { |c| c.name == case_name }
    raise ArgumentError, "Duplicate case name '#{case_name}'. Case names must be unique within a dataset."
  end

  @cases << Case.new(
    name: case_name,
    input: input,
    expected: expected,
    expected_traits: expected_traits,
    evaluator: evaluator,
    step_expectations: step_expectations
  )
end