Class: Legion::Extensions::Llm::Gemini::Provider
- Inherits:
-
Provider
- Object
- Provider
- Legion::Extensions::Llm::Gemini::Provider
- 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 Attribute Summary collapse
Class Method Summary collapse
- .capabilities ⇒ Object
- .configuration_options ⇒ Object
- .configuration_requirements ⇒ Object
- .slug ⇒ Object
Instance Method Summary collapse
- #api_base ⇒ Object
- #completion_url ⇒ Object
- #embed_content_url(model:) ⇒ Object
- #embedding_url(model:) ⇒ Object
- #generate_content_url(model:) ⇒ Object
- #headers ⇒ Object
- #list_models ⇒ Object
- #models_url ⇒ Object
- #stream_generate_content_url(model:) ⇒ Object
- #stream_url ⇒ Object
Class Attribute Details
.registry_publisher ⇒ Object
19 20 21 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 19 def registry_publisher @registry_publisher ||= RegistryPublisher.new end |
Class Method Details
.capabilities ⇒ Object
17 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 17 def capabilities = Capabilities |
.configuration_options ⇒ Object
15 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 15 def = %i[gemini_api_key gemini_api_base] |
.configuration_requirements ⇒ Object
16 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 16 def configuration_requirements = %i[gemini_api_key] |
.slug ⇒ Object
14 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 14 def slug = 'gemini' |
Instance Method Details
#api_base ⇒ Object
71 72 73 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 71 def api_base config.gemini_api_base || 'https://generativelanguage.googleapis.com/v1beta' end |
#completion_url ⇒ Object
79 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 79 def completion_url = generate_content_url(model: @model) |
#embed_content_url(model:) ⇒ Object
92 93 94 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 92 def (model:) "#{model_path(model)}:embedContent" end |
#embedding_url(model:) ⇒ Object
82 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 82 def (model:) = (model:) |
#generate_content_url(model:) ⇒ Object
84 85 86 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 84 def generate_content_url(model:) "#{model_path(model)}:generateContent" end |
#headers ⇒ Object
75 76 77 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 75 def headers { 'x-goog-api-key' => config.gemini_api_key } end |
#list_models ⇒ Object
96 97 98 99 100 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 96 def list_models super.tap do |models| self.class.registry_publisher.publish_models_async(models, readiness: readiness(live: false)) end end |
#models_url ⇒ Object
81 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 81 def models_url = 'models' |
#stream_generate_content_url(model:) ⇒ Object
88 89 90 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 88 def stream_generate_content_url(model:) "#{model_path(model)}:streamGenerateContent?alt=sse" end |
#stream_url ⇒ Object
80 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 80 def stream_url = stream_generate_content_url(model: @model) |