Class: Legion::Extensions::Llm::Routing::OfferingRegistry
- Inherits:
-
Object
- Object
- Legion::Extensions::Llm::Routing::OfferingRegistry
- Includes:
- Enumerable
- Defined in:
- lib/legion/extensions/llm/routing/offering_registry.rb
Overview
In-memory index of provider-neutral model offerings.
Instance Method Summary collapse
- #all ⇒ Object (also: #list)
- #by_capability(capability) ⇒ Object
- #by_model_family(model_family) ⇒ Object
- #by_provider_family(provider_family) ⇒ Object
- #by_provider_instance(provider_instance) ⇒ Object
- #each ⇒ Object
- #filter(**criteria) ⇒ Object
- #find(offering_id) ⇒ Object
- #find_by_model_alias(alias_name) ⇒ Object
-
#initialize(offerings = []) ⇒ OfferingRegistry
constructor
A new instance of OfferingRegistry.
- #register(offering) ⇒ Object
Constructor Details
#initialize(offerings = []) ⇒ OfferingRegistry
Returns a new instance of OfferingRegistry.
11 12 13 14 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 11 def initialize(offerings = []) @offerings = [] Array(offerings).each { |offering| register(offering) } end |
Instance Method Details
#all ⇒ Object Also known as: list
27 28 29 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 27 def all @offerings.dup end |
#by_capability(capability) ⇒ Object
64 65 66 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 64 def by_capability(capability) filter(capability:) end |
#by_model_family(model_family) ⇒ Object
56 57 58 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 56 def by_model_family(model_family) filter(model_family:) end |
#by_provider_family(provider_family) ⇒ Object
52 53 54 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 52 def by_provider_family(provider_family) filter(provider_family:) end |
#by_provider_instance(provider_instance) ⇒ Object
60 61 62 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 60 def by_provider_instance(provider_instance) filter(provider_instance:) end |
#each ⇒ Object
23 24 25 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 23 def each(&) @offerings.each(&) end |
#filter(**criteria) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 40 def filter(**criteria) @offerings.select do |offering| matches_symbol?(offering.provider_family, criteria[:provider_family]) && matches_symbol?(offering.model_family, criteria[:model_family]) && matches_symbol?(offering.provider_instance, criteria[:provider_instance]) && matches_capability?(offering, criteria[:capability]) && matches_model_alias?(offering, criteria[:model_alias]) && matches_model?(offering, criteria[:model]) && matches_usage_type?(offering, criteria[:usage_type]) end end |
#find(offering_id) ⇒ Object
32 33 34 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 32 def find(offering_id) @offerings.find { |offering| offering.offering_id == offering_id.to_s } end |
#find_by_model_alias(alias_name) ⇒ Object
36 37 38 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 36 def find_by_model_alias(alias_name) @offerings.find { |offering| offering.model_alias?(alias_name) } end |
#register(offering) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 16 def register(offering) normalized = normalize_offering(offering) @offerings.reject! { |existing| existing.offering_id == normalized.offering_id } @offerings << normalized normalized end |