Class: RubyLLM::Contract::Validator

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.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