Module: LexLLM::Routing::LaneKey
- Defined in:
- lib/lex_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
- .model_slug(model) ⇒ Object
- .sensitive_fingerprint_key?(key) ⇒ Boolean
Class Method Details
.eligibility_fingerprint(offering) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/lex_llm/routing/lane_key.rb', line 24 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
36 37 38 39 40 41 42 43 |
# File 'lib/lex_llm/routing/lane_key.rb', line 36 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
9 10 11 12 13 14 |
# File 'lib/lex_llm/routing/lane_key.rb', line 9 def for(offering, prefix: 'llm.fleet', include_context: true, include_fingerprint: false) parts = [prefix, lane_kind(offering), model_slug(offering.model)] parts << "ctx#{offering.context_window}" if include_context && offering.inference? && offering.context_window parts.push('elig', eligibility_fingerprint(offering)) if include_fingerprint parts.join('.') end |
.lane_kind(offering) ⇒ Object
16 17 18 |
# File 'lib/lex_llm/routing/lane_key.rb', line 16 def lane_kind(offering) offering. ? 'embed' : 'inference' end |
.model_slug(model) ⇒ Object
20 21 22 |
# File 'lib/lex_llm/routing/lane_key.rb', line 20 def model_slug(model) model.to_s.downcase.gsub(/[^a-z0-9]+/, '-').gsub(/\A-+|-+\z/, '') end |
.sensitive_fingerprint_key?(key) ⇒ Boolean
45 46 47 48 |
# File 'lib/lex_llm/routing/lane_key.rb', line 45 def sensitive_fingerprint_key?(key) %i[credential credentials endpoint endpoint_url identity path prompt reply_to secret secrets token url].include?(key) end |