Class: Askcii::ProviderConfig
- Inherits:
-
Object
- Object
- Askcii::ProviderConfig
- Defined in:
- lib/askcii/provider_config.rb
Overview
Manages provider-specific configuration metadata
Constant Summary collapse
- PROVIDERS =
Provider metadata including default endpoints and requirements
{ 'openai' => { name: 'OpenAI', endpoint: 'https://api.openai.com/v1', requires_key: true, example_models: ['gpt-4', 'gpt-4-turbo', 'gpt-3.5-turbo'] }, 'anthropic' => { name: 'Anthropic', endpoint: 'https://api.anthropic.com', requires_key: true, example_models: ['claude-3-5-sonnet-20241022', 'claude-3-opus-20240229'] }, 'gemini' => { name: 'Google Gemini', endpoint: 'https://generativelanguage.googleapis.com/v1', requires_key: true, example_models: ['gemini-pro', 'gemini-pro-vision'] }, 'deepseek' => { name: 'DeepSeek', endpoint: 'https://api.deepseek.com/v1', requires_key: true, example_models: ['deepseek-chat', 'deepseek-coder'] }, 'openrouter' => { name: 'OpenRouter', endpoint: 'https://openrouter.ai/api/v1', requires_key: true, example_models: ['openai/gpt-4', 'anthropic/claude-3-opus'] }, 'ollama' => { name: 'Ollama', endpoint: 'http://localhost:11434/v1', requires_key: false, example_models: ['llama2', 'mistral', 'codellama'] } }.freeze
Class Method Summary collapse
-
.default_endpoint(provider) ⇒ String
Gets default endpoint for a provider.
-
.display_name(provider) ⇒ String
Gets display name for a provider.
-
.example_models(provider) ⇒ Array<String>
Gets example model IDs for a provider.
-
.get(provider) ⇒ Hash
Gets provider metadata.
-
.info(provider) ⇒ String
Gets provider metadata as a formatted string.
-
.list ⇒ Array<String>
Lists all available provider identifiers.
-
.names ⇒ Array<String>
Lists all provider names for display.
-
.requires_key?(provider) ⇒ Boolean
Checks if provider requires an API key.
-
.valid?(provider) ⇒ Boolean
Checks if a provider identifier is valid.
Class Method Details
.default_endpoint(provider) ⇒ String
Gets default endpoint for a provider
71 72 73 |
# File 'lib/askcii/provider_config.rb', line 71 def default_endpoint(provider) get(provider)[:endpoint] end |
.display_name(provider) ⇒ String
Gets display name for a provider
78 79 80 |
# File 'lib/askcii/provider_config.rb', line 78 def display_name(provider) get(provider)[:name] end |
.example_models(provider) ⇒ Array<String>
Gets example model IDs for a provider
92 93 94 |
# File 'lib/askcii/provider_config.rb', line 92 def example_models(provider) get(provider)[:example_models] end |
.get(provider) ⇒ Hash
Gets provider metadata
63 64 65 66 |
# File 'lib/askcii/provider_config.rb', line 63 def get(provider) PROVIDERS[provider.to_s.downcase] or raise ConfigurationError, "Unknown provider: #{provider}" end |
.info(provider) ⇒ String
Gets provider metadata as a formatted string
106 107 108 109 110 111 112 113 |
# File 'lib/askcii/provider_config.rb', line 106 def info(provider) = get(provider) info = "#{[:name]}\n" info += "Endpoint: #{[:endpoint]}\n" info += "API Key: #{[:requires_key] ? 'Required' : 'Not required'}\n" info += "Example models: #{[:example_models].join(', ')}" info end |
.list ⇒ Array<String>
Lists all available provider identifiers
49 50 51 |
# File 'lib/askcii/provider_config.rb', line 49 def list PROVIDERS.keys end |
.names ⇒ Array<String>
Lists all provider names for display
55 56 57 |
# File 'lib/askcii/provider_config.rb', line 55 def names PROVIDERS.values.map { |p| p[:name] } end |
.requires_key?(provider) ⇒ Boolean
Checks if provider requires an API key
85 86 87 |
# File 'lib/askcii/provider_config.rb', line 85 def requires_key?(provider) get(provider)[:requires_key] end |
.valid?(provider) ⇒ Boolean
Checks if a provider identifier is valid
99 100 101 |
# File 'lib/askcii/provider_config.rb', line 99 def valid?(provider) PROVIDERS.key?(provider.to_s.downcase) end |