Class: Ace::Support::Models::Molecules::ModelValidator
- Inherits:
-
Object
- Object
- Ace::Support::Models::Molecules::ModelValidator
- Defined in:
- lib/ace/support/models/molecules/model_validator.rb
Overview
Validates model names against cached data
Constant Summary collapse
- MAX_SUGGESTIONS =
5- MAX_LEVENSHTEIN_LENGTH =
Maximum string length for Levenshtein distance calculation. Prevents O(n*m) memory/time blowups on pathological inputs.
500
Instance Method Summary collapse
-
#get(model_id) ⇒ Models::ModelInfo?
Get model info (returns nil instead of raising).
-
#initialize(cache_manager: nil) ⇒ ModelValidator
constructor
Initialize validator.
-
#models_for(provider_id) ⇒ Array<String>
List models for a provider.
-
#providers ⇒ Array<String>
List all providers.
-
#valid?(model_id) ⇒ Boolean
Check if model is valid (no exception).
-
#validate(model_id) ⇒ Models::ModelInfo
Validate a model exists.
Constructor Details
#initialize(cache_manager: nil) ⇒ ModelValidator
Initialize validator
16 17 18 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 16 def initialize(cache_manager: nil) @cache_manager = cache_manager || CacheManager.new end |
Instance Method Details
#get(model_id) ⇒ Models::ModelInfo?
Get model info (returns nil instead of raising)
58 59 60 61 62 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 58 def get(model_id) validate(model_id) rescue ModelNotFoundError, ProviderNotFoundError nil end |
#models_for(provider_id) ⇒ Array<String>
List models for a provider
73 74 75 76 77 78 79 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 73 def models_for(provider_id) data = load_data provider_data = data[provider_id] return [] unless provider_data (provider_data["models"]&.keys || []).sort end |
#providers ⇒ Array<String>
List all providers
66 67 68 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 66 def providers load_data.keys.sort end |
#valid?(model_id) ⇒ Boolean
Check if model is valid (no exception)
48 49 50 51 52 53 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 48 def valid?(model_id) validate(model_id) true rescue ModelNotFoundError, ProviderNotFoundError false end |
#validate(model_id) ⇒ Models::ModelInfo
Validate a model exists
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ace/support/models/molecules/model_validator.rb', line 26 def validate(model_id) validate_format!(model_id) data = load_data provider_id, model_name = parse_model_id(model_id) # Check provider exists provider_data = data[provider_id] raise ProviderNotFoundError, provider_id unless provider_data # Check model exists model_data = provider_data.dig("models", model_name) unless model_data suggestions = find_suggestions(provider_data["models"]&.keys || [], model_name) raise ModelNotFoundError.new("#{provider_id}:#{model_name}", suggestions: suggestions) end Models::ModelInfo.from_hash(model_data, provider_id: provider_id) end |