lex-bedrock 0.2.0 → 0.2.1
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 +11 -0
- data/lib/legion/extensions/bedrock/helpers/usage.rb +43 -0
- data/lib/legion/extensions/bedrock/runners/converse.rb +3 -2
- data/lib/legion/extensions/bedrock/runners/invoke.rb +17 -11
- data/lib/legion/extensions/bedrock/version.rb +1 -1
- data/lib/legion/extensions/bedrock.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ee5a83a0ee7afd53d1d8f496bd8382332b1312939b3a49cbdf8c86b2269ff6ab
|
|
4
|
+
data.tar.gz: 467176f83f6f58de4a7640bea5f2fcd6b75be4e2a8d5a77d4fa8f3fe82854c2b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 106a987eb8c0d61d3c8fc1e409b0168d95277db70f98fba5ee8ebd0dbe9b74c3770837b052b6cb04b32aae8bfd639511de8b907dfaccee09ee72c563792ae051
|
|
7
|
+
data.tar.gz: d8c81a605d36fd3e6b572580ad4a092a1a7bf913e5edf51e5e26302facf20cd2248da4311fcbf1867fe6cfc35eea78bea61c71c4c7ca0ff43c91d99b920482f6
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.1] - 2026-03-31
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `Helpers::Usage` — standardized usage hash normalization from SDK structs (`normalize`) and parsed JSON (`from_json`)
|
|
7
|
+
- `Runners::Invoke#invoke_model` now returns a `usage:` key with standardized token counts extracted from the response body
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- `Runners::Converse#create` returns `usage:` as a plain hash (`{ input_tokens:, output_tokens:, cache_read_tokens:, cache_write_tokens: }`) instead of raw SDK struct
|
|
11
|
+
- `Runners::Converse#create_stream` returns the same standardized usage hash
|
|
12
|
+
- `Runners::Invoke#invoke_model` wrapped in `Helpers::Errors.with_retry` for production reliability
|
|
13
|
+
|
|
3
14
|
## [0.2.0] - 2026-03-31
|
|
4
15
|
|
|
5
16
|
### Added
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Bedrock
|
|
6
|
+
module Helpers
|
|
7
|
+
module Usage
|
|
8
|
+
EMPTY_USAGE = {
|
|
9
|
+
input_tokens: 0,
|
|
10
|
+
output_tokens: 0,
|
|
11
|
+
cache_read_tokens: 0,
|
|
12
|
+
cache_write_tokens: 0
|
|
13
|
+
}.freeze
|
|
14
|
+
|
|
15
|
+
module_function
|
|
16
|
+
|
|
17
|
+
def normalize(sdk_usage)
|
|
18
|
+
return EMPTY_USAGE.dup unless sdk_usage
|
|
19
|
+
|
|
20
|
+
{
|
|
21
|
+
input_tokens: sdk_usage.input_tokens || 0,
|
|
22
|
+
output_tokens: sdk_usage.output_tokens || 0,
|
|
23
|
+
cache_read_tokens: 0,
|
|
24
|
+
cache_write_tokens: 0
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def from_json(parsed)
|
|
29
|
+
return EMPTY_USAGE.dup unless parsed.is_a?(Hash)
|
|
30
|
+
|
|
31
|
+
usage = parsed['usage'] || {}
|
|
32
|
+
{
|
|
33
|
+
input_tokens: usage['input_tokens'] || 0,
|
|
34
|
+
output_tokens: usage['output_tokens'] || 0,
|
|
35
|
+
cache_read_tokens: 0,
|
|
36
|
+
cache_write_tokens: 0
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require 'legion/extensions/bedrock/helpers/client'
|
|
4
4
|
require 'legion/extensions/bedrock/helpers/errors'
|
|
5
5
|
require 'legion/extensions/bedrock/helpers/thinking'
|
|
6
|
+
require 'legion/extensions/bedrock/helpers/usage'
|
|
6
7
|
|
|
7
8
|
module Legion
|
|
8
9
|
module Extensions
|
|
@@ -30,7 +31,7 @@ module Legion
|
|
|
30
31
|
response = Helpers::Errors.with_retry { client.converse(**request) }
|
|
31
32
|
{
|
|
32
33
|
result: response.output,
|
|
33
|
-
usage: response.usage,
|
|
34
|
+
usage: Helpers::Usage.normalize(response.usage),
|
|
34
35
|
stop_reason: response.stop_reason
|
|
35
36
|
}
|
|
36
37
|
end
|
|
@@ -83,7 +84,7 @@ module Legion
|
|
|
83
84
|
|
|
84
85
|
{
|
|
85
86
|
result: accumulated_text,
|
|
86
|
-
usage: final_usage,
|
|
87
|
+
usage: Helpers::Usage.normalize(final_usage),
|
|
87
88
|
stop_reason: final_stop
|
|
88
89
|
}
|
|
89
90
|
end
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require 'json'
|
|
4
4
|
require 'legion/extensions/bedrock/helpers/client'
|
|
5
|
+
require 'legion/extensions/bedrock/helpers/errors'
|
|
6
|
+
require 'legion/extensions/bedrock/helpers/usage'
|
|
5
7
|
|
|
6
8
|
module Legion
|
|
7
9
|
module Extensions
|
|
@@ -12,21 +14,25 @@ module Legion
|
|
|
12
14
|
content_type: 'application/json', accept: 'application/json',
|
|
13
15
|
region: Helpers::Client::DEFAULT_REGION, **)
|
|
14
16
|
client = Helpers::Client.bedrock_runtime_client(
|
|
15
|
-
access_key_id
|
|
16
|
-
secret_access_key
|
|
17
|
-
region:
|
|
17
|
+
access_key_id:,
|
|
18
|
+
secret_access_key:,
|
|
19
|
+
region:
|
|
18
20
|
)
|
|
19
21
|
|
|
20
|
-
response =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
response = Helpers::Errors.with_retry do
|
|
23
|
+
client.invoke_model(
|
|
24
|
+
model_id:,
|
|
25
|
+
body: ::JSON.dump(body),
|
|
26
|
+
content_type:,
|
|
27
|
+
accept:
|
|
28
|
+
)
|
|
29
|
+
end
|
|
26
30
|
|
|
31
|
+
parsed = ::JSON.parse(response.body.read)
|
|
27
32
|
{
|
|
28
|
-
result:
|
|
29
|
-
content_type: response.content_type
|
|
33
|
+
result: parsed,
|
|
34
|
+
content_type: response.content_type,
|
|
35
|
+
usage: Helpers::Usage.from_json(parsed)
|
|
30
36
|
}
|
|
31
37
|
end
|
|
32
38
|
|
|
@@ -6,6 +6,7 @@ require 'legion/extensions/bedrock/helpers/errors'
|
|
|
6
6
|
require 'legion/extensions/bedrock/helpers/credentials'
|
|
7
7
|
require 'legion/extensions/bedrock/helpers/thinking'
|
|
8
8
|
require 'legion/extensions/bedrock/helpers/model_registry'
|
|
9
|
+
require 'legion/extensions/bedrock/helpers/usage'
|
|
9
10
|
require 'legion/extensions/bedrock/runners/models'
|
|
10
11
|
require 'legion/extensions/bedrock/runners/converse'
|
|
11
12
|
require 'legion/extensions/bedrock/runners/invoke'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-bedrock
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -161,6 +161,7 @@ files:
|
|
|
161
161
|
- lib/legion/extensions/bedrock/helpers/errors.rb
|
|
162
162
|
- lib/legion/extensions/bedrock/helpers/model_registry.rb
|
|
163
163
|
- lib/legion/extensions/bedrock/helpers/thinking.rb
|
|
164
|
+
- lib/legion/extensions/bedrock/helpers/usage.rb
|
|
164
165
|
- lib/legion/extensions/bedrock/runners/converse.rb
|
|
165
166
|
- lib/legion/extensions/bedrock/runners/invoke.rb
|
|
166
167
|
- lib/legion/extensions/bedrock/runners/models.rb
|