Module: Legion::Extensions::Llm::Gemini::Provider::Capabilities
- Defined in:
- lib/legion/extensions/llm/gemini/provider.rb
Overview
Capability predicates for Gemini API models.
Class Method Summary collapse
- .chat?(model) ⇒ Boolean
- .critical_capabilities_for(model) ⇒ Object
- .embeddings?(model) ⇒ Boolean
- .functions?(model) ⇒ Boolean
- .generation_methods(model) ⇒ Object
- .metadata_for(model) ⇒ Object
- .model_id(model) ⇒ Object
- .streaming?(model) ⇒ Boolean
-
.supported?(model, action) ⇒ Boolean
When generation methods are absent, treat all capabilities as unknown (unknown = unsupported for selection).
- .vision?(model) ⇒ Boolean
Class Method Details
.chat?(model) ⇒ Boolean
345 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 345 def chat?(model) = supported?(model, 'generateContent') |
.critical_capabilities_for(model) ⇒ Object
351 352 353 354 355 356 357 358 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 351 def critical_capabilities_for(model) [ ('streaming' if streaming?(model)), ('embedding' if (model)), ('tools' if functions?(model)), ('vision' if vision?(model)) ].compact end |
.embeddings?(model) ⇒ Boolean
347 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 347 def (model) = supported?(model, 'embedContent') |
.functions?(model) ⇒ Boolean
349 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 349 def functions?(model) = chat?(model) |
.generation_methods(model) ⇒ Object
370 371 372 373 374 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 370 def generation_methods(model) = (model) Array([:supported_generation_methods] || ['supported_generation_methods'] || ['supportedGenerationMethods']) end |
.metadata_for(model) ⇒ Object
382 383 384 385 386 387 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 382 def (model) return model if model.is_a?(Hash) return model. if model.respond_to?(:metadata) {} end |
.model_id(model) ⇒ Object
376 377 378 379 380 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 376 def model_id(model) return model.fetch('name', '').delete_prefix('models/') if model.is_a?(Hash) model.respond_to?(:id) ? model.id.to_s : model.to_s end |
.streaming?(model) ⇒ Boolean
346 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 346 def streaming?(model) = supported?(model, 'streamGenerateContent') |
.supported?(model, action) ⇒ Boolean
When generation methods are absent, treat all capabilities as unknown (unknown = unsupported for selection). Only fall back to name heuristic for embedContent to preserve legacy embedding detection.
363 364 365 366 367 368 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 363 def supported?(model, action) methods = generation_methods(model) return model_id(model).include?('embedding') if methods.empty? methods.include?(action) end |
.vision?(model) ⇒ Boolean
348 |
# File 'lib/legion/extensions/llm/gemini/provider.rb', line 348 def vision?(model) = chat?(model) && model_id(model).match?(/gemini|flash|pro/) |