Module: Qualspec::RSpec::Helpers
- Defined in:
- lib/qualspec/rspec/helpers.rb
Overview
Instance Method Summary collapse
-
#qualspec_compare(responses, criterion, context: nil, threshold: nil) ⇒ ComparisonResult
Compare multiple responses against criteria.
-
#qualspec_evaluate(response, criterion = nil, rubric: nil, context: nil, threshold: nil) ⇒ EvaluationResult
Evaluate a response against a criterion or rubric.
-
#skip_without_qualspec_api ⇒ Object
Helper to skip test if qualspec API is unavailable.
-
#with_qualspec_cassette(name, record: nil) { ... } ⇒ Object
Wrap a block with VCR cassette recording/playback.
Instance Method Details
#qualspec_compare(responses, criterion, context: nil, threshold: nil) ⇒ ComparisonResult
Compare multiple responses against criteria
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/qualspec/rspec/helpers.rb', line 75 def qualspec_compare(responses, criterion, context: nil, threshold: nil) effective_threshold = threshold || Qualspec::RSpec.configuration.default_threshold criteria_list = Array(criterion) display_criterion = criteria_list.join('; ') evaluations = Qualspec.judge.evaluate_comparison( responses: responses.transform_values(&:to_s), criteria: criteria_list, context: context, pass_threshold: effective_threshold ) results = wrap_comparison_results(evaluations, responses, display_criterion, effective_threshold) ComparisonResult.new(results, criterion: display_criterion) end |
#qualspec_evaluate(response, criterion = nil, rubric: nil, context: nil, threshold: nil) ⇒ EvaluationResult
Evaluate a response against a criterion or rubric
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/qualspec/rspec/helpers.rb', line 37 def qualspec_evaluate(response, criterion = nil, rubric: nil, context: nil, threshold: nil) raise ArgumentError, 'Must provide either criterion or rubric:' if criterion.nil? && rubric.nil? effective_threshold = threshold || Qualspec::RSpec.configuration.default_threshold criterion_text, display_criterion = resolve_criterion(criterion, rubric) evaluation = Qualspec.judge.evaluate( response: response.to_s, criterion: criterion_text, context: context, pass_threshold: effective_threshold ) EvaluationResult.new( evaluation, criterion: display_criterion, response: response, threshold: effective_threshold ) end |
#skip_without_qualspec_api ⇒ Object
Helper to skip test if qualspec API is unavailable
120 121 122 123 124 125 126 127 128 |
# File 'lib/qualspec/rspec/helpers.rb', line 120 def skip_without_qualspec_api Qualspec.client.chat( model: Qualspec.configuration.judge_model, messages: [{ role: 'user', content: 'test' }], json_mode: false ) rescue Qualspec::Client::RequestError => e skip "Qualspec API unavailable: #{e.}" end |
#with_qualspec_cassette(name, record: nil) { ... } ⇒ Object
Wrap a block with VCR cassette recording/playback
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/qualspec/rspec/helpers.rb', line 103 def with_qualspec_cassette(name, record: nil, &block) record_mode = record || Qualspec::RSpec.configuration.record_mode # Configure VCR with RSpec cassette directory Qualspec::Recorder.setup( cassette_dir: Qualspec::RSpec.configuration.vcr_cassette_dir ) case record_mode when :none Qualspec::Recorder.playback(name, &block) else VCR.use_cassette(name, record: record_mode, &block) end end |