Module: ActiveAgent::GenerationProvider::ClassMethods

Defined in:
lib/active_agent/generation_provider.rb

Instance Method Summary collapse

Instance Method Details

#configuration(name_or_provider, **options) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/active_agent/generation_provider.rb', line 15

def configuration(name_or_provider, **options)
  config = ActiveAgent.config[name_or_provider.to_s] || ActiveAgent.config.dig(ENV["RAILS_ENV"], name_or_provider.to_s) || {}
  config = { "service" => "OpenAI" } if config.empty? && name_or_provider == :openai
  config.merge!(options)
raise "Failed to load provider #{name_or_provider}: configuration not found for provider"  if config["service"].nil?
  configure_provider(config)
rescue LoadError => e
  raise RuntimeError, "Failed to load provider #{name_or_provider}: #{e.message}"
end

#configure_provider(config) ⇒ Object



25
26
27
28
29
30
# File 'lib/active_agent/generation_provider.rb', line 25

def configure_provider(config)
  service_name = config["service"]
  require "active_agent/generation_provider/#{service_name.underscore}_provider"

  ActiveAgent::GenerationProvider.const_get("#{service_name.camelize}Provider").new(config)
end

#generation_providerObject



32
33
34
35
# File 'lib/active_agent/generation_provider.rb', line 32

def generation_provider
  self.generation_provider = :openai if _generation_provider.nil?
  _generation_provider
end

#generation_provider=(name_or_provider) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/active_agent/generation_provider.rb', line 42

def generation_provider=(name_or_provider)
  case name_or_provider
  when Symbol, String
    provider = configuration(name_or_provider)
    assign_provider(name_or_provider.to_s, provider)
  when OpenAI::Client
    name = :openai
    assign_provider(name, name_or_provider)
  else
    raise ArgumentError
  end
end

#generation_provider_nameObject



37
38
39
40
# File 'lib/active_agent/generation_provider.rb', line 37

def generation_provider_name
  self.generation_provider = :openai if _generation_provider_name.nil?
  _generation_provider_name
end