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

Inherits:
LexLLM::Provider
  • Object
show all
Defined in:
lib/legion/extensions/llm/gemini/provider.rb

Overview

Gemini provider implementation for the LexLLM base provider contract.

Defined Under Namespace

Modules: Capabilities

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.capabilitiesObject



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

def capabilities = Capabilities

.configuration_optionsObject



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

def configuration_options = %i[gemini_api_key gemini_api_base]

.configuration_requirementsObject



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

def configuration_requirements = %i[gemini_api_key]

.slugObject



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

def slug = 'gemini'

Instance Method Details

#api_baseObject



65
66
67
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 65

def api_base
  config.gemini_api_base || 'https://generativelanguage.googleapis.com/v1beta'
end

#completion_urlObject



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

def completion_url = generate_content_url(model: @model)

#embed_content_url(model:) ⇒ Object



86
87
88
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 86

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

#embedding_url(model:) ⇒ Object



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

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

#generate_content_url(model:) ⇒ Object



78
79
80
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 78

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

#headersObject



69
70
71
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 69

def headers
  { 'x-goog-api-key' => config.gemini_api_key }
end

#models_urlObject



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

def models_url = 'models'

#stream_generate_content_url(model:) ⇒ Object



82
83
84
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 82

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

#stream_urlObject



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

def stream_url = stream_generate_content_url(model: @model)