Class: Legion::Extensions::Llm::Gemini::Provider
- Inherits:
-
Provider
- Object
- Provider
- Legion::Extensions::Llm::Gemini::Provider
- Includes:
- MessageFormatter, MessageKinds, OperationParsers, 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
- .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
- #models_url ⇒ Object
- #settings ⇒ Object
-
#stop_reason_map_additions ⇒ Object
StopReasonMapping mixin override: the shared vocabulary covers the common spellings; these are the Gemini wire finishReason additions (R4: dialect at the parser edge).
- #stream_generate_content_url(model:) ⇒ Object
- #stream_url ⇒ Object
Class Method Details
.capabilities ⇒ Object
337 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 337 def capabilities = Capabilities |
.configuration_options ⇒ Object
335 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 335 def = %i[gemini_api_key gemini_api_base] |
.configuration_requirements ⇒ Object
336 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 336 def configuration_requirements = %i[gemini_api_key] |
.slug ⇒ Object
334 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 334 def slug = 'gemini' |
Instance Method Details
#api_base ⇒ Object
393 394 395 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 393 def api_base config.gemini_api_base || settings[:instances][:default][:endpoint] end |
#completion_url ⇒ Object
401 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 401 def completion_url = generate_content_url(model: @model) |
#embed_content_url(model:) ⇒ Object
414 415 416 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 414 def (model:) "#{model_path(model)}:embedContent" end |
#embedding_url(model:) ⇒ Object
404 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 404 def (model:) = (model:) |
#generate_content_url(model:) ⇒ Object
406 407 408 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 406 def generate_content_url(model:) "#{model_path(model)}:generateContent" end |
#headers ⇒ Object
397 398 399 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 397 def headers identity_headers.merge('x-goog-api-key' => config.gemini_api_key) end |
#models_url ⇒ Object
403 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 403 def models_url = 'models' |
#settings ⇒ Object
389 390 391 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 389 def settings Gemini.default_settings end |
#stop_reason_map_additions ⇒ Object
StopReasonMapping mixin override: the shared vocabulary covers the common spellings; these are the Gemini wire finishReason additions (R4: dialect at the parser edge).
421 422 423 424 425 426 427 428 429 430 431 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 421 def stop_reason_map_additions { 'STOP' => :end_turn, 'MAX_TOKENS' => :max_tokens, 'SAFETY' => :content_filter, 'RECITATION' => :content_filter, 'PROHIBITED_CONTENT' => :content_filter, 'SPII' => :content_filter, 'IMAGE_SAFETY' => :content_filter } end |
#stream_generate_content_url(model:) ⇒ Object
410 411 412 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 410 def stream_generate_content_url(model:) "#{model_path(model)}:streamGenerateContent?alt=sse" end |
#stream_url ⇒ Object
402 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 402 def stream_url = stream_generate_content_url(model: @model) |