Module: Rager::Providers

Extended by:
T::Sig
Defined in:
lib/rager/providers.rb

Constant Summary collapse

PROVIDERS =
T.let({
  chat: {
    "openai" => -> { Rager::Chat::Providers::Openai.new }
  },
  embed: {
    "openai" => -> { Rager::Embed::Providers::Openai.new }
  },
  rerank: {
    "cohere" => -> { Rager::Rerank::Providers::Cohere.new }
  },
  image_gen: {
    "replicate" => -> { Rager::ImageGen::Providers::Replicate.new }
  },
  mesh_gen: {
    "replicate" => -> { Rager::MeshGen::Providers::Replicate.new }
  },
  template: {
    "erb" => -> { Rager::Template::Providers::Erb.new }
  },
  search: {
    "jina" => -> { Rager::Search::Providers::Jina.new }
  }
}.freeze, T::Hash[Symbol, T::Hash[String, T.proc.returns(T.untyped)]])

Class Method Summary collapse

Class Method Details

.get_provider(operation, provider_name, options) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rager/providers.rb', line 35

def self.get_provider(operation, provider_name, options)
  operation_providers = PROVIDERS[operation]
  if operation_providers&.key?(provider_name.downcase)
    return T.must(operation_providers[provider_name.downcase]).call
  end

  known_providers = operation_providers&.keys&.join(", ") || "none"
  raise Rager::Errors::OptionsError.new(
    options,
    ["provider"],
    details: "Unknown #{operation} provider: #{provider_name}. Known providers: #{known_providers}"
  )
end