Class: Ace::LLM::Atoms::ProviderConfigValidator
- Inherits:
-
Object
- Object
- Ace::LLM::Atoms::ProviderConfigValidator
- Defined in:
- lib/ace/llm/atoms/provider_config_validator.rb
Overview
ProviderConfigValidator validates provider configuration structure and content
Defined Under Namespace
Classes: ValidationResult
Constant Summary collapse
- REQUIRED_FIELDS =
Required fields for any provider configuration
%w[name class gem].freeze
- OPTIONAL_FIELDS =
Optional fields with expected types
{ "models" => Array, "api_key" => [Hash, NilClass], "capabilities" => Array, "default_options" => Hash, "endpoint" => String, "version" => String, "aliases" => Hash }.freeze
- VALID_CAPABILITIES =
Valid capability values
%w[ text_generation streaming function_calling vision embeddings code_generation chat_completion ].freeze
Instance Method Summary collapse
-
#validate(config) ⇒ ValidationResult
Validate a provider configuration.
-
#validate_batch(configs) ⇒ Hash
Validate a batch of configurations.
Instance Method Details
#validate(config) ⇒ ValidationResult
Validate a provider configuration
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/ace/llm/atoms/provider_config_validator.rb', line 47 def validate(config) errors = [] warnings = [] # Check that config is a Hash unless config.is_a?(Hash) errors << "Configuration must be a Hash, got #{config.class}" return ValidationResult.new(false, errors, warnings) end # Validate required fields REQUIRED_FIELDS.each do |field| if config[field].nil? || config[field].to_s.strip.empty? errors << "Missing required field: '#{field}'" end end # Validate field types validate_field_types(config, errors, warnings) # Validate specific field content validate_name(config["name"], errors) if config["name"] validate_class(config["class"], errors) if config["class"] validate_gem(config["gem"], errors) if config["gem"] validate_models(config["models"], warnings) if config["models"] validate_api_key(config["api_key"], errors, warnings) if config["api_key"] validate_capabilities(config["capabilities"], warnings) if config["capabilities"] (config["default_options"], warnings) if config["default_options"] validate_aliases(config["aliases"], errors, warnings) if config["aliases"] # Return validation result ValidationResult.new(errors.empty?, errors, warnings) end |
#validate_batch(configs) ⇒ Hash
Validate a batch of configurations
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/ace/llm/atoms/provider_config_validator.rb', line 84 def validate_batch(configs) results = {} configs.each do |config| name = config["name"] || "unnamed" results[name] = validate(config) end results end |