Class: RubyLLM::Contract::Validator
- Inherits:
-
Object
- Object
- RubyLLM::Contract::Validator
- Defined in:
- lib/ruby_llm/contract/contract/validator.rb
Class Method Summary collapse
- .run_observations(observers, parsed_output, input: nil) ⇒ Object
- .validate(raw_output:, definition:, output_type:, input: nil, schema: nil) ⇒ Object
Instance Method Summary collapse
Class Method Details
.run_observations(observers, parsed_output, input: nil) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/ruby_llm/contract/contract/validator.rb', line 22 def self.run_observations(observers, parsed_output, input: nil) observers.map do |obs| passed = obs.call(parsed_output, input: input) { description: obs.description, passed: !!passed } rescue StandardError => e { description: obs.description, passed: false, error: "#{e.class}: #{e.}" } end end |
.validate(raw_output:, definition:, output_type:, input: nil, schema: nil) ⇒ Object
17 18 19 20 |
# File 'lib/ruby_llm/contract/contract/validator.rb', line 17 def self.validate(raw_output:, definition:, output_type:, input: nil, schema: nil) new.validate(raw_output: raw_output, definition: definition, output_type: output_type, input: input, schema: schema) end |
Instance Method Details
#validate(raw_output:, definition:, output_type:, input: nil, schema: nil) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/ruby_llm/contract/contract/validator.rb', line 6 def validate(raw_output:, definition:, output_type:, input: nil, schema: nil) effective_definition = schema ? with_json_strategy(definition) : definition parsed_output = parse_output(raw_output, effective_definition) return parsed_output if parse_error?(parsed_output) effective_output = coerce_and_freeze(parsed_output, output_type, schema) errors = collect_errors(effective_output, schema, definition, input) { parsed_output: effective_output[:value], errors: errors, status: errors.empty? ? :ok : :validation_failed } end |