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

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.policy_tags.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.embedding? ? '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

Returns:

  • (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