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

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

Returns:

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