Module: RubyLLM::Contract::MinitestHelpers
- Defined in:
- lib/ruby_llm/contract/minitest.rb
Instance Method Summary collapse
- #assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) ⇒ Object
- #assert_satisfies_contract(result, msg = nil) ⇒ Object
- #refute_satisfies_contract(result, msg = nil) ⇒ Object
- #stub_step(step_class, response: nil, responses: nil) ⇒ Object
Instance Method Details
#assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ruby_llm/contract/minitest.rb', line 17 def assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) report = step.run_eval(eval_name, context: context) if minimum_score assert report.score >= minimum_score, msg || "Expected #{eval_name} eval score >= #{minimum_score}, got #{report.score.round(2)} (#{report.pass_rate})" else assert report.passed?, msg || "Expected #{eval_name} eval to pass, got #{report.score.round(2)} (#{report.pass_rate})" end if maximum_cost assert report.total_cost <= maximum_cost, msg || "Expected #{eval_name} eval cost <= $#{format("%.4f", maximum_cost)}, got $#{format("%.4f", report.total_cost)}" end report end |
#assert_satisfies_contract(result, msg = nil) ⇒ Object
8 9 10 11 |
# File 'lib/ruby_llm/contract/minitest.rb', line 8 def assert_satisfies_contract(result, msg = nil) assert result.ok?, msg || "Expected step result to satisfy contract, " \ "but got status: #{result.status}. Errors: #{result.validation_errors.join(", ")}" end |
#refute_satisfies_contract(result, msg = nil) ⇒ Object
13 14 15 |
# File 'lib/ruby_llm/contract/minitest.rb', line 13 def refute_satisfies_contract(result, msg = nil) refute result.ok?, msg || "Expected step result NOT to satisfy contract, but it passed" end |
#stub_step(step_class, response: nil, responses: nil) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/ruby_llm/contract/minitest.rb', line 36 def stub_step(step_class, response: nil, responses: nil) adapter = if responses Adapters::Test.new(responses: responses) else Adapters::Test.new(response: response) end RubyLLM::Contract.configure { |c| c.default_adapter = adapter } end |