lex-llm-bedrock 0.3.5 → 0.3.7
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 +10 -0
- data/lib/legion/extensions/llm/bedrock/actors/fleet_worker.rb +14 -3
- data/lib/legion/extensions/llm/bedrock/provider.rb +20 -2
- data/lib/legion/extensions/llm/bedrock/runners/fleet_worker.rb +13 -0
- data/lib/legion/extensions/llm/bedrock/version.rb +1 -1
- data/lib/legion/extensions/llm/bedrock.rb +1 -0
- 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: d0046ccd6a590eef46ec16fa6092134f7b63eb5d2512d6c75249ee51a63633ec
|
|
4
|
+
data.tar.gz: 4944f376912c69fc937856c81630996eeaa2e1504f94dd5ea06d0d8ab8d0ff66
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a2fd955d35142f9d765d8059cb3a793f4453eab7dfefb171c4223a0b88ad59d520e653a3841c86bbfa9ecc193f9e8b85549176ab4ff559b673cfe4393a7aa519
|
|
7
|
+
data.tar.gz: bfeeee234144ba6b45cb7bd39495533c7c18c998d1c44e9c4ce6ac17d4a2b95403f28de6f0d25d07a49d5a2f413689cb8f4a2ee2aa59e5716f443daff80c5a0a
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.7 - 2026-05-12
|
|
4
|
+
|
|
5
|
+
- Use `Legion::Logging::Helper` explicitly across Bedrock provider, actor, and fleet runner logging surfaces.
|
|
6
|
+
- Add non-sensitive debug logging for Bedrock tool configuration and fleet request routing.
|
|
7
|
+
- Report optional actor runtime load failures through `handle_exception` instead of direct warning output.
|
|
8
|
+
|
|
9
|
+
## 0.3.6 - 2026-05-08
|
|
10
|
+
|
|
11
|
+
- Accept keyword arguments in `list_models` to match the base provider contract called by `discover_offerings`.
|
|
12
|
+
|
|
3
13
|
## 0.3.5 - 2026-05-06
|
|
4
14
|
|
|
5
15
|
- Load provider-owned fleet actors through the LegionIO subscription base and the canonical Bedrock provider root.
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'legion/extensions/llm/bedrock'
|
|
4
|
+
|
|
3
5
|
begin
|
|
4
6
|
require 'legion/extensions/actors/subscription'
|
|
5
7
|
rescue LoadError => e
|
|
6
|
-
|
|
8
|
+
Legion::Extensions::Llm::Bedrock.handle_exception(
|
|
9
|
+
e,
|
|
10
|
+
level: :debug,
|
|
11
|
+
handled: true,
|
|
12
|
+
operation: 'bedrock.actor.fleet_worker.load_subscription'
|
|
13
|
+
)
|
|
7
14
|
end
|
|
8
15
|
|
|
9
16
|
unless defined?(Legion::Extensions::Actors::Subscription)
|
|
10
17
|
raise LoadError, 'LegionIO actor runtime is required for Bedrock fleet worker'
|
|
11
18
|
end
|
|
12
19
|
|
|
13
|
-
require 'legion/extensions/llm/bedrock'
|
|
14
20
|
require 'legion/extensions/llm/fleet/provider_responder'
|
|
15
21
|
|
|
16
22
|
module Legion
|
|
@@ -20,6 +26,8 @@ module Legion
|
|
|
20
26
|
module Actor
|
|
21
27
|
# Subscription actor for Bedrock fleet request consumption.
|
|
22
28
|
class FleetWorker < Legion::Extensions::Actors::Subscription
|
|
29
|
+
include Legion::Logging::Helper
|
|
30
|
+
|
|
23
31
|
def runner_class
|
|
24
32
|
'Legion::Extensions::Llm::Bedrock::Runners::FleetWorker'
|
|
25
33
|
end
|
|
@@ -33,7 +41,10 @@ module Legion
|
|
|
33
41
|
end
|
|
34
42
|
|
|
35
43
|
def enabled?
|
|
36
|
-
|
|
44
|
+
instances = Bedrock.discover_instances
|
|
45
|
+
enabled = Legion::Extensions::Llm::Fleet::ProviderResponder.enabled_for?(instances)
|
|
46
|
+
log.debug { "bedrock.actor.fleet_worker.enabled?: instances=#{instances.size} enabled=#{enabled}" }
|
|
47
|
+
enabled
|
|
37
48
|
end
|
|
38
49
|
end
|
|
39
50
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require 'aws-sdk-bedrock'
|
|
4
4
|
require 'aws-sdk-bedrockruntime'
|
|
5
5
|
require 'legion/json'
|
|
6
|
-
require 'legion/logging'
|
|
6
|
+
require 'legion/logging/helper'
|
|
7
7
|
require 'legion/extensions/llm'
|
|
8
8
|
|
|
9
9
|
module Legion
|
|
@@ -140,7 +140,7 @@ module Legion
|
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
-
def list_models
|
|
143
|
+
def list_models(**)
|
|
144
144
|
log.info { 'bedrock.provider.list_models: fetching live model list' }
|
|
145
145
|
response = bedrock_client.list_foundation_models
|
|
146
146
|
models = Array(value(response, :model_summaries)).filter_map { |summary| model_info_from_summary(summary) }
|
|
@@ -164,6 +164,10 @@ module Legion
|
|
|
164
164
|
converse_request(messages, model:, temperature:, max_tokens:, tools:, tool_prefs:),
|
|
165
165
|
params
|
|
166
166
|
)
|
|
167
|
+
log.debug do
|
|
168
|
+
"bedrock.provider.chat: request prepared model=#{model_id(model)} tools=#{tools.size} " \
|
|
169
|
+
"tool_choice=#{tool_choice_label(tool_prefs)} param_keys=#{params.keys.map(&:to_s).sort.join(',')}"
|
|
170
|
+
end
|
|
167
171
|
parse_converse_response(runtime_client.converse(**request), model_id(model))
|
|
168
172
|
end
|
|
169
173
|
|
|
@@ -174,6 +178,10 @@ module Legion
|
|
|
174
178
|
converse_request(messages, model:, temperature:, max_tokens:, tools:, tool_prefs:),
|
|
175
179
|
params
|
|
176
180
|
)
|
|
181
|
+
log.debug do
|
|
182
|
+
"bedrock.provider.stream: request prepared model=#{model_id(model)} tools=#{tools.size} " \
|
|
183
|
+
"tool_choice=#{tool_choice_label(tool_prefs)} param_keys=#{params.keys.map(&:to_s).sort.join(',')}"
|
|
184
|
+
end
|
|
177
185
|
stream_converse(request, model_id(model), &)
|
|
178
186
|
end
|
|
179
187
|
|
|
@@ -349,6 +357,10 @@ module Legion
|
|
|
349
357
|
def format_tool_config(tools, tool_prefs)
|
|
350
358
|
return nil if tools.empty?
|
|
351
359
|
|
|
360
|
+
log.debug do
|
|
361
|
+
"bedrock.provider.tools: formatting tools=#{tools.keys.map(&:to_s).sort.join(',')} " \
|
|
362
|
+
"tool_choice=#{tool_choice_label(tool_prefs)}"
|
|
363
|
+
end
|
|
352
364
|
{ tools: tools.values.map { |tool| tool_definition(tool) }, tool_choice: tool_choice(tool_prefs) }.compact
|
|
353
365
|
end
|
|
354
366
|
|
|
@@ -382,6 +394,12 @@ module Legion
|
|
|
382
394
|
end
|
|
383
395
|
end
|
|
384
396
|
|
|
397
|
+
def tool_choice_label(tool_prefs)
|
|
398
|
+
return 'none' unless tool_prefs
|
|
399
|
+
|
|
400
|
+
(tool_prefs[:choice] || tool_prefs['choice'] || 'unspecified').to_s
|
|
401
|
+
end
|
|
402
|
+
|
|
385
403
|
def parse_converse_response(response, fallback_model)
|
|
386
404
|
output = value(response, :output)
|
|
387
405
|
message = value(output, :message)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'legion/extensions/llm/fleet/provider_responder'
|
|
4
4
|
require 'legion/extensions/llm/bedrock'
|
|
5
|
+
require 'legion/logging/helper'
|
|
5
6
|
|
|
6
7
|
module Legion
|
|
7
8
|
module Extensions
|
|
@@ -10,9 +11,15 @@ module Legion
|
|
|
10
11
|
module Runners
|
|
11
12
|
# Runner entrypoint for Bedrock fleet request execution.
|
|
12
13
|
module FleetWorker
|
|
14
|
+
extend Legion::Logging::Helper
|
|
15
|
+
|
|
13
16
|
module_function
|
|
14
17
|
|
|
15
18
|
def handle_fleet_request(payload, delivery: nil, properties: nil)
|
|
19
|
+
log.debug do
|
|
20
|
+
"bedrock.runner.fleet_worker.handle_fleet_request: request_id=#{payload_value(payload, :request_id)} " \
|
|
21
|
+
"provider_instance=#{payload_value(payload, :provider_instance) || 'default'}"
|
|
22
|
+
end
|
|
16
23
|
Legion::Extensions::Llm::Fleet::ProviderResponder.call(
|
|
17
24
|
payload: payload,
|
|
18
25
|
provider_family: Bedrock::PROVIDER_FAMILY,
|
|
@@ -22,6 +29,12 @@ module Legion
|
|
|
22
29
|
properties: properties
|
|
23
30
|
)
|
|
24
31
|
end
|
|
32
|
+
|
|
33
|
+
def payload_value(payload, key)
|
|
34
|
+
return nil unless payload.respond_to?(:[])
|
|
35
|
+
|
|
36
|
+
payload[key] || payload[key.to_s]
|
|
37
|
+
end
|
|
25
38
|
end
|
|
26
39
|
end
|
|
27
40
|
end
|