Module: Seo::Providers

Defined in:
lib/seo/providers.rb,
lib/seo/providers/base.rb,
lib/seo/providers/gemini.rb,
lib/seo/providers/ollama.rb,
lib/seo/providers/openai.rb,
lib/seo/providers/anthropic.rb

Defined Under Namespace

Classes: Anthropic, Base, Gemini, Ollama, OpenAI

Constant Summary collapse

REGISTRY =
{
  "anthropic" => Anthropic,
  "openai"    => OpenAI,
  "gemini"    => Gemini,
  "ollama"    => Ollama
}.freeze

Class Method Summary collapse

Class Method Details

.build(provider_name:, api_key: nil, model: nil, host: nil) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
26
# File 'lib/seo/providers.rb', line 18

def self.build(provider_name:, api_key: nil, model: nil, host: nil)
  klass = REGISTRY[provider_name.to_s.downcase]
  raise ArgumentError, "Unknown provider '#{provider_name}'. Supported: #{REGISTRY.keys.join(", ")}" unless klass

  args = { api_key: api_key }
  args[:model] = model if model
  args[:host]  = host  if host && provider_name.to_s == "ollama"
  klass.new(**args)
end

.namesObject



28
29
30
# File 'lib/seo/providers.rb', line 28

def self.names
  REGISTRY.keys
end