Module: Legion::Extensions::Llm::Routing::LaneKey
- Defined in:
- lib/legion/extensions/llm/routing/lane_key.rb
Overview
Builds stable fleet lane keys from provider-neutral model offerings.
Class Method Summary collapse
- .eligibility_fingerprint(offering) ⇒ Object
- .fingerprint_metadata(metadata) ⇒ Object
- .for(offering, prefix: 'llm.fleet', include_context: true, include_fingerprint: false) ⇒ Object
- .lane_kind(offering) ⇒ Object
- .lane_model(offering) ⇒ Object
- .model_slug(model) ⇒ Object
- .sensitive_fingerprint_key?(key) ⇒ Boolean
Class Method Details
.eligibility_fingerprint(offering) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 35 def eligibility_fingerprint(offering) canonical = { usage_type: offering.usage_type, capabilities: offering.capabilities.sort, context_window: offering.context_window, max_output_tokens: offering.max_output_tokens, policy_tags: offering..sort, metadata: (offering.) } Digest::SHA1.hexdigest(Legion::JSON.generate(canonical))[0, 10] end |
.fingerprint_metadata(metadata) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 47 def () .fetch(:eligibility, {}) .to_h .transform_keys(&:to_sym) .reject { |key, _| sensitive_fingerprint_key?(key) } .sort .to_h end |
.for(offering, prefix: 'llm.fleet', include_context: true, include_fingerprint: false) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 11 def for(offering, prefix: 'llm.fleet', include_context: true, include_fingerprint: false) parts = [prefix, lane_kind(offering), model_slug(lane_model(offering))] if include_context && offering.inference? && offering.context_window parts << "ctx#{offering.context_window}" end parts.push('elig', eligibility_fingerprint(offering)) if include_fingerprint parts.join('.') end |
.lane_kind(offering) ⇒ Object
27 28 29 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 27 def lane_kind(offering) offering. ? 'embed' : 'inference' end |
.lane_model(offering) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 20 def lane_model(offering) return offering.canonical_model_alias if offering.respond_to?(:canonical_model_alias) && offering.canonical_model_alias.to_s != '' offering.model end |
.model_slug(model) ⇒ Object
31 32 33 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 31 def model_slug(model) model.to_s.downcase.gsub(/[^a-z0-9]+/, '-').gsub(/\A-+|-+\z/, '') end |
.sensitive_fingerprint_key?(key) ⇒ Boolean
56 57 58 59 |
# File 'lib/legion/extensions/llm/routing/lane_key.rb', line 56 def sensitive_fingerprint_key?(key) %i[credential credentials endpoint endpoint_url identity path prompt reply_to secret secrets token url].include?(key) end |