Class: Legion::Extensions::Llm::Gemini::Provider

Inherits:
Provider
  • Object
show all
Includes:
MessageFormatter, MessageKinds, OfferingBuilder, ResponseParser, Logging::Helper
Defined in:
lib/legion/extensions/llm/gemini/provider.rb

Overview

Gemini provider implementation for the Legion::Extensions::Llm base provider contract.

Defined Under Namespace

Modules: Capabilities

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.capabilitiesObject



358
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 358

def capabilities = Capabilities

.configuration_optionsObject



356
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 356

def configuration_options = %i[gemini_api_key gemini_api_base]

.configuration_requirementsObject



357
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 357

def configuration_requirements = %i[gemini_api_key]

.slugObject



355
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 355

def slug = 'gemini'

Instance Method Details

#api_baseObject



414
415
416
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 414

def api_base
  config.gemini_api_base || settings[:instances][:default][:endpoint]
end

#completion_urlObject



422
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 422

def completion_url = generate_content_url(model: @model)

#embed_content_url(model:) ⇒ Object



435
436
437
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 435

def embed_content_url(model:)
  "#{model_path(model)}:embedContent"
end

#embedding_url(model:) ⇒ Object



425
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 425

def embedding_url(model:) = embed_content_url(model:)

#generate_content_url(model:) ⇒ Object



427
428
429
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 427

def generate_content_url(model:)
  "#{model_path(model)}:generateContent"
end

#headersObject



418
419
420
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 418

def headers
  identity_headers.merge('x-goog-api-key' => config.gemini_api_key)
end

#list_modelsObject



439
440
441
442
443
444
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 439

def list_models(**)
  log.info { 'listing available Gemini models' }
  super.tap do |models|
    log.info { "discovered #{models.size} Gemini model(s)" }
  end
end

#models_urlObject



424
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 424

def models_url = 'models'

#settingsObject



410
411
412
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 410

def settings
  Gemini.default_settings
end

#stream_generate_content_url(model:) ⇒ Object



431
432
433
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 431

def stream_generate_content_url(model:)
  "#{model_path(model)}:streamGenerateContent?alt=sse"
end

#stream_urlObject



423
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 423

def stream_url = stream_generate_content_url(model: @model)