lex-llm-vllm 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/legion/extensions/llm/vllm/provider.rb +14 -7
- data/lib/legion/extensions/llm/vllm/version.rb +1 -1
- data/lib/legion/extensions/llm/vllm.rb +18 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ec67bb352cf0bd9dc3ae3f0102e7d26a27ebc8c64c56d98811742c4b75e4ae0
|
|
4
|
+
data.tar.gz: de092940c2c186e982b0d453b4f1f94157a868626e2a7b4b16cd6c0c1596b28c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aad15995696865b3cc0a6e42b6e627e2d4a5dbdb7768ec676d3867964fad107709ce10bfe908128a6575d8bc81d0a8ee9b97b45c554db093b12dbea5b67300c0
|
|
7
|
+
data.tar.gz: ecfe08d54a3113188c09f642e1b457af39eca29542315d529c477f3f2cac4096a7a1485fd2977fb6acdb7a4c6885f904510b9a3653eb9a966da5ffb6b60ac5ba
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.8 - 2026-05-07
|
|
4
|
+
|
|
5
|
+
- Read vLLM thinking defaults from the active provider instance config so per-instance `enable_thinking` settings affect chat payloads.
|
|
6
|
+
|
|
7
|
+
## 0.2.7 - 2026-05-07
|
|
8
|
+
|
|
9
|
+
- Fix merge order in `discover_instances` so a user-supplied `tier:` in instance config is no longer clobbered by the `:direct` default.
|
|
10
|
+
- Infer instance tier from endpoint URL in `normalize_instance_config`: `localhost`/`127.0.0.1`/`::1` → `:local`, any other host → `:direct`. Explicit `tier:` in config still wins.
|
|
11
|
+
|
|
3
12
|
## 0.2.6 - 2026-05-06
|
|
4
13
|
|
|
5
14
|
- Load provider-owned fleet actors through the LegionIO subscription base and the canonical vLLM provider root.
|
|
@@ -162,18 +162,25 @@ module Legion
|
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
def vllm_thinking_setting
|
|
165
|
+
instance_thinking_enabled? || global_thinking_enabled?
|
|
166
|
+
rescue StandardError => e
|
|
167
|
+
handle_exception(e, level: :debug, handled: true, operation: 'vllm.thinking_setting')
|
|
168
|
+
false
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def instance_thinking_enabled?
|
|
172
|
+
return config.enable_thinking if config.respond_to?(:enable_thinking)
|
|
173
|
+
|
|
174
|
+
config.respond_to?(:[]) && config[:enable_thinking] == true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def global_thinking_enabled?
|
|
165
178
|
return false unless defined?(Legion::Settings)
|
|
166
179
|
|
|
167
180
|
vllm = Legion::Settings.dig(:llm, :providers, :vllm)
|
|
168
181
|
return false unless vllm.is_a?(Hash)
|
|
169
182
|
|
|
170
|
-
vllm[:enable_thinking] == true ||
|
|
171
|
-
vllm['enable_thinking'] == true ||
|
|
172
|
-
vllm.dig(:instances, :default, :enable_thinking) == true ||
|
|
173
|
-
vllm.dig('instances', 'default', 'enable_thinking') == true
|
|
174
|
-
rescue StandardError => e
|
|
175
|
-
handle_exception(e, level: :debug, handled: true, operation: 'vllm.thinking_setting')
|
|
176
|
-
false
|
|
183
|
+
vllm[:enable_thinking] == true || vllm['enable_thinking'] == true
|
|
177
184
|
end
|
|
178
185
|
|
|
179
186
|
def parse_list_models_response(response, provider, capabilities)
|
|
@@ -14,6 +14,7 @@ module Legion
|
|
|
14
14
|
extend Legion::Extensions::Llm::AutoRegistration
|
|
15
15
|
|
|
16
16
|
PROVIDER_FAMILY = :vllm
|
|
17
|
+
DEFAULT_INSTANCE_TIER = { tier: :direct }.freeze
|
|
17
18
|
|
|
18
19
|
def self.default_settings
|
|
19
20
|
::Legion::Extensions::Llm.provider_settings(
|
|
@@ -60,7 +61,7 @@ module Legion
|
|
|
60
61
|
configured = CredentialSources.setting(:extensions, :llm, :vllm, :instances)
|
|
61
62
|
if configured.is_a?(Hash)
|
|
62
63
|
configured.each do |name, config|
|
|
63
|
-
instances[name.to_sym] = normalize_instance_config(config)
|
|
64
|
+
instances[name.to_sym] = DEFAULT_INSTANCE_TIER.merge(normalize_instance_config(config))
|
|
64
65
|
end
|
|
65
66
|
end
|
|
66
67
|
|
|
@@ -69,16 +70,31 @@ module Legion
|
|
|
69
70
|
|
|
70
71
|
def self.normalize_instance_config(config)
|
|
71
72
|
normalized = config.to_h.transform_keys(&:to_sym)
|
|
73
|
+
resolve_api_base_aliases(normalized)
|
|
74
|
+
normalized[:tier] ||= infer_tier_from_endpoint(normalized[:vllm_api_base])
|
|
75
|
+
normalized
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def self.resolve_api_base_aliases(normalized)
|
|
72
79
|
normalized[:vllm_api_base] ||= normalized.delete(:base_url)
|
|
73
80
|
normalized[:vllm_api_base] ||= normalized.delete(:api_base)
|
|
74
81
|
normalized[:vllm_api_base] ||= normalized.delete(:endpoint)
|
|
75
82
|
normalized[:vllm_api_base] = normalize_api_base(normalized[:vllm_api_base]) if normalized[:vllm_api_base]
|
|
76
|
-
normalized
|
|
77
83
|
end
|
|
78
84
|
|
|
79
85
|
def self.normalize_api_base(url)
|
|
80
86
|
url.to_s.sub(%r{/v1/?\z}, '')
|
|
81
87
|
end
|
|
88
|
+
|
|
89
|
+
def self.infer_tier_from_endpoint(url)
|
|
90
|
+
return :direct if url.nil? || url.to_s.empty?
|
|
91
|
+
|
|
92
|
+
require 'uri'
|
|
93
|
+
host = URI.parse(url.to_s).host.to_s.downcase
|
|
94
|
+
%w[localhost 127.0.0.1 ::1].include?(host) ? :local : :direct
|
|
95
|
+
rescue URI::InvalidURIError
|
|
96
|
+
:direct
|
|
97
|
+
end
|
|
82
98
|
end
|
|
83
99
|
end
|
|
84
100
|
end
|