ruby-amazon-bedrock 0.2.3 → 0.2.4
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/.circleci/config.yml +0 -2
- data/.env.sample +5 -0
- data/.gitignore +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +53 -47
- data/README.md +18 -10
- data/lib/amazon_bedrock/version.rb +1 -1
- data/lib/amazon_bedrock.rb +2 -1
- data/lib/bedrock_runtime/client.rb +12 -6
- data/lib/bedrock_runtime/payload_builders/meta/llama370b_instruct_v1.rb +21 -0
- data/lib/bedrock_runtime/payload_builders/meta/llama38b_instruct_v1.rb +21 -0
- data/lib/bedrock_runtime/payload_factory.rb +4 -0
- data/lib/bedrock_runtime/response_factory.rb +2 -0
- data/ruby-amazon-bedrock.gemspec +1 -0
- data/spec/bedrock_runtime/client_spec.rb +4 -1
- data/spec/bedrock_runtime/payload_builders/meta/llama370b_instruct_v1_spec.rb +26 -0
- data/spec/bedrock_runtime/payload_builders/meta/llama38b_instruct_v1_spec.rb +26 -0
- data/spec/bedrock_runtime/payload_factory_spec.rb +3 -1
- data/spec/cassettes/models/meta_llama3-70b-instruct-v1_0.yml +73 -0
- data/spec/cassettes/models/meta_llama3-8b-instruct-v1_0.yml +71 -0
- metadata +24 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 06f4b8ff875c2d3d8b104c026621108f24e2ea60dd4ef07e85b4874b346b95af
|
|
4
|
+
data.tar.gz: 5fae3ad77abbab1f45ce187ade385da0ab0d3a64d7a8c38e22283a08ed23078b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cd0bd9610262b0222d9680386cfcd46b070582c8f0053737020c35509504a31c2cac4e94668debed36fc9f3f5c4f45396f0082c57314277572124d24ce2bffb4
|
|
7
|
+
data.tar.gz: 44c080409f214e186841ff78a073a84749bb84cc978d2d206045f0a143b9533bf652356da17e4405bbdf3ae59337a0752f762af02ec2125ee1e84750a1c394a9
|
data/.circleci/config.yml
CHANGED
data/.env.sample
ADDED
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [0.2.5] - 2024-09-17
|
|
2
|
+
|
|
3
|
+
- Support for llama38b_instruct_v1
|
|
4
|
+
- Support for llama370b_instruct_v1
|
|
5
|
+
- Explicitly add base64 gem to dependencies
|
|
6
|
+
- Support the use of AWS Named Profiles for authentication
|
|
7
|
+
|
|
1
8
|
## [0.2.3] - 2024-01-12
|
|
2
9
|
|
|
3
10
|
- Fix A121 Labs bug for maxTokens parameter
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,104 +1,110 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ruby-amazon-bedrock (0.2.
|
|
4
|
+
ruby-amazon-bedrock (0.2.4)
|
|
5
5
|
aws-sdk-bedrockruntime (~> 1.0)
|
|
6
6
|
aws-sdk-s3 (~> 1.0)
|
|
7
|
+
base64 (~> 0.2)
|
|
7
8
|
|
|
8
9
|
GEM
|
|
9
10
|
remote: https://rubygems.org/
|
|
10
11
|
specs:
|
|
11
|
-
addressable (2.8.
|
|
12
|
-
public_suffix (>= 2.0.2, <
|
|
12
|
+
addressable (2.8.7)
|
|
13
|
+
public_suffix (>= 2.0.2, < 7.0)
|
|
13
14
|
ast (2.4.2)
|
|
14
15
|
aws-eventstream (1.3.0)
|
|
15
|
-
aws-partitions (1.
|
|
16
|
-
aws-sdk-bedrockruntime (1.
|
|
17
|
-
aws-sdk-core (~> 3, >= 3.
|
|
18
|
-
aws-sigv4 (~> 1.
|
|
19
|
-
aws-sdk-core (3.
|
|
16
|
+
aws-partitions (1.963.0)
|
|
17
|
+
aws-sdk-bedrockruntime (1.17.0)
|
|
18
|
+
aws-sdk-core (~> 3, >= 3.201.0)
|
|
19
|
+
aws-sigv4 (~> 1.5)
|
|
20
|
+
aws-sdk-core (3.201.4)
|
|
20
21
|
aws-eventstream (~> 1, >= 1.3.0)
|
|
21
22
|
aws-partitions (~> 1, >= 1.651.0)
|
|
22
23
|
aws-sigv4 (~> 1.8)
|
|
23
24
|
jmespath (~> 1, >= 1.6.1)
|
|
24
|
-
aws-sdk-kms (1.
|
|
25
|
-
aws-sdk-core (~> 3, >= 3.
|
|
26
|
-
aws-sigv4 (~> 1.
|
|
27
|
-
aws-sdk-s3 (1.
|
|
28
|
-
aws-sdk-core (~> 3, >= 3.
|
|
25
|
+
aws-sdk-kms (1.88.0)
|
|
26
|
+
aws-sdk-core (~> 3, >= 3.201.0)
|
|
27
|
+
aws-sigv4 (~> 1.5)
|
|
28
|
+
aws-sdk-s3 (1.157.0)
|
|
29
|
+
aws-sdk-core (~> 3, >= 3.201.0)
|
|
29
30
|
aws-sdk-kms (~> 1)
|
|
30
|
-
aws-sigv4 (~> 1.
|
|
31
|
-
aws-sigv4 (1.
|
|
31
|
+
aws-sigv4 (~> 1.5)
|
|
32
|
+
aws-sigv4 (1.9.1)
|
|
32
33
|
aws-eventstream (~> 1, >= 1.0.2)
|
|
34
|
+
base64 (0.2.0)
|
|
35
|
+
bigdecimal (3.1.8)
|
|
33
36
|
bundler-audit (0.9.1)
|
|
34
37
|
bundler (>= 1.2.0, < 3)
|
|
35
38
|
thor (~> 1.0)
|
|
36
39
|
coderay (1.1.3)
|
|
37
|
-
crack (0.
|
|
40
|
+
crack (1.0.0)
|
|
41
|
+
bigdecimal
|
|
38
42
|
rexml
|
|
39
|
-
diff-lcs (1.5.
|
|
43
|
+
diff-lcs (1.5.1)
|
|
40
44
|
dotenv (2.8.1)
|
|
41
|
-
hashdiff (1.
|
|
45
|
+
hashdiff (1.1.1)
|
|
42
46
|
jmespath (1.6.2)
|
|
43
|
-
json (2.
|
|
47
|
+
json (2.7.2)
|
|
44
48
|
language_server-protocol (3.17.0.3)
|
|
45
|
-
method_source (1.
|
|
46
|
-
parallel (1.
|
|
47
|
-
parser (3.
|
|
49
|
+
method_source (1.1.0)
|
|
50
|
+
parallel (1.26.1)
|
|
51
|
+
parser (3.3.4.2)
|
|
48
52
|
ast (~> 2.4.1)
|
|
49
53
|
racc
|
|
50
54
|
pry (0.14.2)
|
|
51
55
|
coderay (~> 1.1)
|
|
52
56
|
method_source (~> 1.0)
|
|
53
|
-
public_suffix (5.
|
|
54
|
-
racc (1.
|
|
57
|
+
public_suffix (5.1.1)
|
|
58
|
+
racc (1.8.1)
|
|
55
59
|
rainbow (3.1.1)
|
|
56
|
-
rake (13.1
|
|
57
|
-
regexp_parser (2.
|
|
58
|
-
rexml (3.
|
|
59
|
-
rspec (3.
|
|
60
|
-
rspec-core (~> 3.
|
|
61
|
-
rspec-expectations (~> 3.
|
|
62
|
-
rspec-mocks (~> 3.
|
|
63
|
-
rspec-core (3.
|
|
64
|
-
rspec-support (~> 3.
|
|
65
|
-
rspec-expectations (3.
|
|
60
|
+
rake (13.2.1)
|
|
61
|
+
regexp_parser (2.9.2)
|
|
62
|
+
rexml (3.3.7)
|
|
63
|
+
rspec (3.13.0)
|
|
64
|
+
rspec-core (~> 3.13.0)
|
|
65
|
+
rspec-expectations (~> 3.13.0)
|
|
66
|
+
rspec-mocks (~> 3.13.0)
|
|
67
|
+
rspec-core (3.13.0)
|
|
68
|
+
rspec-support (~> 3.13.0)
|
|
69
|
+
rspec-expectations (3.13.1)
|
|
66
70
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
67
|
-
rspec-support (~> 3.
|
|
68
|
-
rspec-mocks (3.
|
|
71
|
+
rspec-support (~> 3.13.0)
|
|
72
|
+
rspec-mocks (3.13.1)
|
|
69
73
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
70
|
-
rspec-support (~> 3.
|
|
71
|
-
rspec-support (3.
|
|
72
|
-
rubocop (1.
|
|
74
|
+
rspec-support (~> 3.13.0)
|
|
75
|
+
rspec-support (3.13.1)
|
|
76
|
+
rubocop (1.65.1)
|
|
73
77
|
json (~> 2.3)
|
|
74
78
|
language_server-protocol (>= 3.17.0)
|
|
75
79
|
parallel (~> 1.10)
|
|
76
|
-
parser (>= 3.
|
|
80
|
+
parser (>= 3.3.0.2)
|
|
77
81
|
rainbow (>= 2.2.2, < 4.0)
|
|
78
|
-
regexp_parser (>=
|
|
82
|
+
regexp_parser (>= 2.4, < 3.0)
|
|
79
83
|
rexml (>= 3.2.5, < 4.0)
|
|
80
|
-
rubocop-ast (>= 1.
|
|
84
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
|
81
85
|
ruby-progressbar (~> 1.7)
|
|
82
86
|
unicode-display_width (>= 2.4.0, < 3.0)
|
|
83
|
-
rubocop-ast (1.
|
|
84
|
-
parser (>= 3.
|
|
87
|
+
rubocop-ast (1.32.0)
|
|
88
|
+
parser (>= 3.3.1.0)
|
|
85
89
|
ruby-progressbar (1.13.0)
|
|
86
|
-
thor (1.3.
|
|
90
|
+
thor (1.3.1)
|
|
87
91
|
unicode-display_width (2.5.0)
|
|
88
92
|
vcr (6.2.0)
|
|
89
|
-
webmock (3.
|
|
93
|
+
webmock (3.23.1)
|
|
90
94
|
addressable (>= 2.8.0)
|
|
91
95
|
crack (>= 0.3.2)
|
|
92
96
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
93
97
|
|
|
94
98
|
PLATFORMS
|
|
95
99
|
arm64-darwin-22
|
|
100
|
+
arm64-darwin-23
|
|
96
101
|
|
|
97
102
|
DEPENDENCIES
|
|
98
103
|
bundler-audit (~> 0.8)
|
|
99
104
|
dotenv (~> 2.7)
|
|
100
105
|
pry (~> 0.13)
|
|
101
106
|
rake (~> 13.0)
|
|
107
|
+
rexml (>= 3.3.6)
|
|
102
108
|
rspec (~> 3.0)
|
|
103
109
|
rubocop (~> 1.21)
|
|
104
110
|
ruby-amazon-bedrock!
|
|
@@ -106,4 +112,4 @@ DEPENDENCIES
|
|
|
106
112
|
webmock (~> 3.12)
|
|
107
113
|
|
|
108
114
|
BUNDLED WITH
|
|
109
|
-
2.4.
|
|
115
|
+
2.4.14
|
data/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Amazon Bedrock is a fully managed service that makes FMs from leading AI startup
|
|
|
14
14
|
Add the following line to your application's Gemfile:
|
|
15
15
|
|
|
16
16
|
```ruby
|
|
17
|
-
gem "ruby-amazon-bedrock", "~> 0.2.
|
|
17
|
+
gem "ruby-amazon-bedrock", "~> 0.2.4"
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
And then execute:
|
|
@@ -59,20 +59,28 @@ Instantiate a client by passing your AWS IAM credentials:
|
|
|
59
59
|
client = RubyAmazonBedrock::Client.new(
|
|
60
60
|
region: "AWS_REGION",
|
|
61
61
|
access_key_id: "AWS_ACCESS_KEY_ID",
|
|
62
|
-
|
|
62
|
+
secret_access_key: "AWS_SECRET_ACCESS_KEY"
|
|
63
63
|
)
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
Or copy the `.env.sample` to a `.env` file with your account's credentials and use the `ENV` variable. NOTE: This step is REQUIRED in order to run the tests with `rspec`
|
|
67
67
|
|
|
68
68
|
```ruby
|
|
69
|
-
RubyAmazonBedrock.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
client = RubyAmazonBedrock::Client.new(
|
|
70
|
+
region: ENV["AWS_REGION"],
|
|
71
|
+
access_key_id: ENV["AWS_ACCESS_KEY_ID"],
|
|
72
|
+
secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
|
|
73
|
+
)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### AWS Named Profiles
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
You can also use [AWS Named Profiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-format-profile) by passing the `profile` keywoard argument. When using a named profile, specyfing the `region`, `access_key_id` and `access_token` won't be required.
|
|
79
|
+
|
|
80
|
+
```ruby
|
|
81
|
+
client = RubyAmazonBedrock::Client.new(
|
|
82
|
+
profile: "AWS_PROFILE"
|
|
83
|
+
)
|
|
76
84
|
```
|
|
77
85
|
|
|
78
86
|
## Options
|
|
@@ -231,7 +239,7 @@ _*Claude Instant 1.2*_
|
|
|
231
239
|
Supports: Question answering, information extraction, removing PII, content generation, multiple choice classification, Roleplay, comparing text, summarization, document Q&A with citation
|
|
232
240
|
|
|
233
241
|
```ruby
|
|
234
|
-
client.invoke_model('anthropic.claude-instant-v1', 'What is a neural network?')
|
|
242
|
+
client.invoke_model(id: 'anthropic.claude-instant-v1', prompt: 'What is a neural network?')
|
|
235
243
|
|
|
236
244
|
# Response
|
|
237
245
|
{:completion=>
|
data/lib/amazon_bedrock.rb
CHANGED
|
@@ -13,7 +13,7 @@ module RubyAmazonBedrock
|
|
|
13
13
|
|
|
14
14
|
# Configuration class for setting up AWS credentials and region.
|
|
15
15
|
class Configuration
|
|
16
|
-
attr_accessor :region, :access_key_id, :secret_access_key
|
|
16
|
+
attr_accessor :region, :access_key_id, :secret_access_key, :profile
|
|
17
17
|
|
|
18
18
|
# Initializes a new Configuration instance, loading values from
|
|
19
19
|
# environment variables or setting them to nil by default so the
|
|
@@ -22,6 +22,7 @@ module RubyAmazonBedrock
|
|
|
22
22
|
@region = ENV.fetch('AWS_REGION', nil)
|
|
23
23
|
@access_key_id = ENV.fetch('AWS_ACCESS_KEY_ID', nil)
|
|
24
24
|
@secret_access_key = ENV.fetch('AWS_SECRET_ACCESS_KEY', nil)
|
|
25
|
+
@profile = ENV.fetch('AWS_PROFILE', nil)
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -14,14 +14,20 @@ module RubyAmazonBedrock
|
|
|
14
14
|
# Initializes the AWS BedrockRuntime client.
|
|
15
15
|
#
|
|
16
16
|
# @note The AWS credentials and region are fetched from the environment variables.
|
|
17
|
-
def initialize(region: nil, access_key_id: nil, secret_access_key: nil)
|
|
17
|
+
def initialize(region: nil, access_key_id: nil, secret_access_key: nil, profile: nil)
|
|
18
18
|
config = RubyAmazonBedrock.configuration || RubyAmazonBedrock::Configuration.new
|
|
19
19
|
|
|
20
|
-
@client =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
@client = if profile
|
|
21
|
+
Aws::BedrockRuntime::Client.new(
|
|
22
|
+
profile: profile
|
|
23
|
+
)
|
|
24
|
+
else
|
|
25
|
+
Aws::BedrockRuntime::Client.new(
|
|
26
|
+
region: region || config.region,
|
|
27
|
+
access_key_id: access_key_id || config.access_key_id,
|
|
28
|
+
secret_access_key: secret_access_key || config.secret_access_key
|
|
29
|
+
)
|
|
30
|
+
end
|
|
25
31
|
end
|
|
26
32
|
|
|
27
33
|
# Invokes a model using the Bedrock Runtime client.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RubyAmazonBedrock
|
|
4
|
+
module PayloadBuilders
|
|
5
|
+
module Meta
|
|
6
|
+
# Llama370bInstructV1 is a subclass of Base. It provides functionalities specific to the Meta
|
|
7
|
+
# Llama 3 70B Instruct model.
|
|
8
|
+
#
|
|
9
|
+
# @see https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=meta.llama3-70b-instruct-v1:0
|
|
10
|
+
# for more information about the Meta model.
|
|
11
|
+
class Llama370bInstructV1 < Base
|
|
12
|
+
# Returns the model ID for the Meta Llama 3 70B Instruct model.
|
|
13
|
+
#
|
|
14
|
+
# @return [String] 'meta.llama3-70b-chat-v1:0'
|
|
15
|
+
def model_id
|
|
16
|
+
'meta.llama3-70b-instruct-v1:0'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RubyAmazonBedrock
|
|
4
|
+
module PayloadBuilders
|
|
5
|
+
module Meta
|
|
6
|
+
# Llama370bInstructV1 is a subclass of Base. It provides functionalities specific to the Meta
|
|
7
|
+
# Llama 3 70B Instruct model.
|
|
8
|
+
#
|
|
9
|
+
# @see https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/providers?model=meta.llama3-8b-instruct-v1:0
|
|
10
|
+
# for more information about the Meta model.
|
|
11
|
+
class Llama38bInstructV1 < Base
|
|
12
|
+
# Returns the model ID for the Meta Llama 3 70B Instruct model.
|
|
13
|
+
#
|
|
14
|
+
# @return [String] 'meta.llama3-8b-instruct-v1:0'
|
|
15
|
+
def model_id
|
|
16
|
+
'meta.llama3-8b-instruct-v1:0'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -14,6 +14,8 @@ require_relative 'payload_builders/cohere/embed_english_v3'
|
|
|
14
14
|
require_relative 'payload_builders/cohere/embed_multilingual_v3'
|
|
15
15
|
require_relative 'payload_builders/meta/llama213b_chat_v1'
|
|
16
16
|
require_relative 'payload_builders/meta/llama270b_chat_v1'
|
|
17
|
+
require_relative 'payload_builders/meta/llama370b_instruct_v1'
|
|
18
|
+
require_relative 'payload_builders/meta/llama38b_instruct_v1'
|
|
17
19
|
require_relative 'payload_builders/stability_ai/stable_diffusion_xl_v0'
|
|
18
20
|
require_relative 'payload_builders/stability_ai/stable_diffusion_xl_v1'
|
|
19
21
|
|
|
@@ -64,6 +66,8 @@ module RubyAmazonBedrock
|
|
|
64
66
|
'cohere.embed-multilingual-v3' => PayloadBuilders::Cohere::EmbedMultilingualV3,
|
|
65
67
|
'meta.llama2-13b-chat-v1' => PayloadBuilders::Meta::Llama213bChatV1,
|
|
66
68
|
'meta.llama2-70b-chat-v1' => PayloadBuilders::Meta::Llama270bChatV1,
|
|
69
|
+
'meta.llama3-70b-instruct-v1:0' => PayloadBuilders::Meta::Llama370bInstructV1,
|
|
70
|
+
'meta.llama3-8b-instruct-v1:0' => PayloadBuilders::Meta::Llama38bInstructV1,
|
|
67
71
|
'stability.stable-diffusion-xl-v0' => PayloadBuilders::StabilityAi::StableDiffusionXlV0,
|
|
68
72
|
'stability.stable-diffusion-xl-v1' => PayloadBuilders::StabilityAi::StableDiffusionXlV1
|
|
69
73
|
}
|
|
@@ -55,6 +55,8 @@ module RubyAmazonBedrock
|
|
|
55
55
|
'cohere.embed-multilingual-v3' => ResponseBuilders::CohereEmbed,
|
|
56
56
|
'meta.llama2-13b-chat-v1' => ResponseBuilders::Meta,
|
|
57
57
|
'meta.llama2-70b-chat-v1' => ResponseBuilders::Meta,
|
|
58
|
+
'meta.llama3-70b-instruct-v1:0' => ResponseBuilders::Meta,
|
|
59
|
+
'meta.llama3-8b-instruct-v1:0' => ResponseBuilders::Meta,
|
|
58
60
|
'stability.stable-diffusion-xl-v0' => ResponseBuilders::StabilityAi,
|
|
59
61
|
'stability.stable-diffusion-xl-v1' => ResponseBuilders::StabilityAi
|
|
60
62
|
}
|
data/ruby-amazon-bedrock.gemspec
CHANGED
|
@@ -8,7 +8,8 @@ RSpec.describe RubyAmazonBedrock::Client do
|
|
|
8
8
|
described_class.new(
|
|
9
9
|
region: ENV.fetch('AWS_REGION', nil),
|
|
10
10
|
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID', nil),
|
|
11
|
-
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY', nil)
|
|
11
|
+
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY', nil),
|
|
12
|
+
profile: ENV.fetch('AWS_PROFILE', nil)
|
|
12
13
|
)
|
|
13
14
|
end
|
|
14
15
|
|
|
@@ -26,6 +27,8 @@ RSpec.describe RubyAmazonBedrock::Client do
|
|
|
26
27
|
'cohere.embed-multilingual-v3',
|
|
27
28
|
'meta.llama2-13b-chat-v1',
|
|
28
29
|
'meta.llama2-70b-chat-v1',
|
|
30
|
+
'meta.llama3-70b-instruct-v1:0',
|
|
31
|
+
'meta.llama3-8b-instruct-v1:0',
|
|
29
32
|
'stability.stable-diffusion-xl-v0',
|
|
30
33
|
'stability.stable-diffusion-xl-v1'
|
|
31
34
|
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
require 'bedrock_runtime/payload_builders/meta/llama370b_instruct_v1'
|
|
5
|
+
|
|
6
|
+
RSpec.describe RubyAmazonBedrock::PayloadBuilders::Meta::Llama370bInstructV1 do
|
|
7
|
+
let(:prompt) { 'example_prompt' }
|
|
8
|
+
let(:options) { {} }
|
|
9
|
+
let(:body) do
|
|
10
|
+
{
|
|
11
|
+
prompt: prompt,
|
|
12
|
+
max_gen_len: 512,
|
|
13
|
+
temperature: 0.5,
|
|
14
|
+
top_p: 0.9
|
|
15
|
+
}.to_json
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '#build' do
|
|
19
|
+
it_should_behave_like 'a payload builder'
|
|
20
|
+
|
|
21
|
+
context 'with custom parameters' do
|
|
22
|
+
include_context 'meta parameters'
|
|
23
|
+
it_should_behave_like 'a payload builder'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
require 'bedrock_runtime/payload_builders/meta/llama38b_instruct_v1'
|
|
5
|
+
|
|
6
|
+
RSpec.describe RubyAmazonBedrock::PayloadBuilders::Meta::Llama38bInstructV1 do
|
|
7
|
+
let(:prompt) { 'example_prompt' }
|
|
8
|
+
let(:options) { {} }
|
|
9
|
+
let(:body) do
|
|
10
|
+
{
|
|
11
|
+
prompt: prompt,
|
|
12
|
+
max_gen_len: 512,
|
|
13
|
+
temperature: 0.5,
|
|
14
|
+
top_p: 0.9
|
|
15
|
+
}.to_json
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '#build' do
|
|
19
|
+
it_should_behave_like 'a payload builder'
|
|
20
|
+
|
|
21
|
+
context 'with custom parameters' do
|
|
22
|
+
include_context 'meta parameters'
|
|
23
|
+
it_should_behave_like 'a payload builder'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -19,6 +19,8 @@ RSpec.describe RubyAmazonBedrock::PayloadFactory do
|
|
|
19
19
|
"cohere.embed-multilingual-v3",
|
|
20
20
|
"meta.llama2-13b-chat-v1",
|
|
21
21
|
"meta.llama2-70b-chat-v1",
|
|
22
|
+
"meta.llama3-70b-instruct-v1:0",
|
|
23
|
+
"meta.llama3-8b-instruct-v1:0",
|
|
22
24
|
"stability.stable-diffusion-xl-v0",
|
|
23
25
|
"stability.stable-diffusion-xl-v1"]
|
|
24
26
|
end
|
|
@@ -48,7 +50,7 @@ RSpec.describe RubyAmazonBedrock::PayloadFactory do
|
|
|
48
50
|
|
|
49
51
|
describe '#models_to_builders' do
|
|
50
52
|
it 'defines a mapping of model identifiers to builder classes' do
|
|
51
|
-
expect(models_mapping.keys).to
|
|
53
|
+
expect(models_mapping.keys).to contain_exactly(*bedrock_models)
|
|
52
54
|
end
|
|
53
55
|
end
|
|
54
56
|
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: post
|
|
5
|
+
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/meta.llama3-70b-instruct-v1:0/invoke
|
|
6
|
+
body:
|
|
7
|
+
encoding: UTF-8
|
|
8
|
+
string: '{"prompt":"Give me a short list of steps for creating a Ruby gem","max_gen_len":512,"temperature":0.5,"top_p":0.9}'
|
|
9
|
+
headers:
|
|
10
|
+
Accept-Encoding:
|
|
11
|
+
- ''
|
|
12
|
+
Amz-Sdk-Invocation-Id:
|
|
13
|
+
- 32851ae6-1618-400a-9411-11d6d3d67636
|
|
14
|
+
Content-Type:
|
|
15
|
+
- application/json
|
|
16
|
+
Accept:
|
|
17
|
+
- "*/*"
|
|
18
|
+
User-Agent:
|
|
19
|
+
- aws-sdk-ruby3/3.201.4 ua/2.1 api/bedrock_runtime#1.17.0 os/macos#23 md/arm64
|
|
20
|
+
lang/ruby#3.0.0 md/3.0.0 m/D
|
|
21
|
+
Host:
|
|
22
|
+
- bedrock-runtime.us-east-1.amazonaws.com
|
|
23
|
+
X-Amz-Date:
|
|
24
|
+
- 20240917T163051Z
|
|
25
|
+
X-Amz-Content-Sha256:
|
|
26
|
+
- cf1ec2da83f5824b04de33922f5727968ac482454a9af56c2c3119c6711f2b1e
|
|
27
|
+
Authorization:
|
|
28
|
+
- AWS4-HMAC-SHA256 Credential=AKIASKU7DUX5LSIDI7FA/20240917/us-east-1/bedrock/aws4_request,
|
|
29
|
+
SignedHeaders=accept;amz-sdk-invocation-id;content-type;host;x-amz-content-sha256;x-amz-date,
|
|
30
|
+
Signature=c2858b5790f78f1428b84dace670018733257a68224824485146d1c0a695f0c6
|
|
31
|
+
Content-Length:
|
|
32
|
+
- '114'
|
|
33
|
+
response:
|
|
34
|
+
status:
|
|
35
|
+
code: 200
|
|
36
|
+
message: OK
|
|
37
|
+
headers:
|
|
38
|
+
Date:
|
|
39
|
+
- Tue, 17 Sep 2024 16:31:00 GMT
|
|
40
|
+
Content-Type:
|
|
41
|
+
- application/json
|
|
42
|
+
Content-Length:
|
|
43
|
+
- '1244'
|
|
44
|
+
Connection:
|
|
45
|
+
- keep-alive
|
|
46
|
+
X-Amzn-Requestid:
|
|
47
|
+
- 83c64727-212b-4d5d-a26e-681c991809d3
|
|
48
|
+
X-Amzn-Bedrock-Invocation-Latency:
|
|
49
|
+
- '7293'
|
|
50
|
+
X-Amzn-Bedrock-Output-Token-Count:
|
|
51
|
+
- '293'
|
|
52
|
+
X-Amzn-Bedrock-Input-Token-Count:
|
|
53
|
+
- '12'
|
|
54
|
+
body:
|
|
55
|
+
encoding: UTF-8
|
|
56
|
+
string: '{"generation":".\n\nHere is a short list of steps for creating a Ruby
|
|
57
|
+
gem:\n\n1. **Create a new gem**: Run `gem new my_gem` (replace \"my_gem\"
|
|
58
|
+
with your gem''s name) to create a new gem with the basic directory structure.\n2.
|
|
59
|
+
**Define your gem''s metadata**: Edit the `my_gem.gemspec` file to specify
|
|
60
|
+
your gem''s name, and other metadata such as version, description, and dependencies.\n3.
|
|
61
|
+
**Write your gem''s code**: Create a `lib` directory and add your Ruby code
|
|
62
|
+
to it. This is where you''ll implement the functionality of your gem.\n4.
|
|
63
|
+
**Test your gem**: Create a `test` directory and add test files to it. Use
|
|
64
|
+
a testing framework like RSpec or Minitest to write tests for your gem.\n5.
|
|
65
|
+
**Build and package your gem**: Run `gem build my_gem.gemspec` to build your
|
|
66
|
+
gem, and then `gem push my_gem-0.1.0.gem` (replace \"0.1.0\" with your gem''s
|
|
67
|
+
version) to push it to RubyGems.org.\n6. **Publish your gem**: Go to RubyGems.org
|
|
68
|
+
and create an account if you haven''t already. Then, upload your gem and make
|
|
69
|
+
it publicly available.\n\nThat''s it! Of course, there are many more details
|
|
70
|
+
to consider when creating a Ruby gem, but these steps should give you a good
|
|
71
|
+
starting point.","prompt_token_count":12,"generation_token_count":293,"stop_reason":"stop"}'
|
|
72
|
+
recorded_at: Tue, 17 Sep 2024 16:31:00 GMT
|
|
73
|
+
recorded_with: VCR 6.2.0
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: post
|
|
5
|
+
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/meta.llama3-8b-instruct-v1:0/invoke
|
|
6
|
+
body:
|
|
7
|
+
encoding: UTF-8
|
|
8
|
+
string: '{"prompt":"Give me a short list of steps for creating a Ruby gem","max_gen_len":512,"temperature":0.5,"top_p":0.9}'
|
|
9
|
+
headers:
|
|
10
|
+
Accept-Encoding:
|
|
11
|
+
- ''
|
|
12
|
+
Amz-Sdk-Invocation-Id:
|
|
13
|
+
- f256772e-a630-485d-b52d-e20311339125
|
|
14
|
+
Content-Type:
|
|
15
|
+
- application/json
|
|
16
|
+
Accept:
|
|
17
|
+
- "*/*"
|
|
18
|
+
User-Agent:
|
|
19
|
+
- aws-sdk-ruby3/3.201.4 ua/2.1 api/bedrock_runtime#1.17.0 os/macos#23 md/arm64
|
|
20
|
+
lang/ruby#3.0.0 md/3.0.0 m/D
|
|
21
|
+
Host:
|
|
22
|
+
- bedrock-runtime.us-east-1.amazonaws.com
|
|
23
|
+
X-Amz-Date:
|
|
24
|
+
- 20240917T163109Z
|
|
25
|
+
X-Amz-Content-Sha256:
|
|
26
|
+
- cf1ec2da83f5824b04de33922f5727968ac482454a9af56c2c3119c6711f2b1e
|
|
27
|
+
Authorization:
|
|
28
|
+
- AWS4-HMAC-SHA256 Credential=AKIASKU7DUX5LSIDI7FA/20240917/us-east-1/bedrock/aws4_request,
|
|
29
|
+
SignedHeaders=accept;amz-sdk-invocation-id;content-type;host;x-amz-content-sha256;x-amz-date,
|
|
30
|
+
Signature=036bf9fb08b5c0308655674b5bd9eec2eb8c347f3b2e712585be1def1c780f69
|
|
31
|
+
Content-Length:
|
|
32
|
+
- '114'
|
|
33
|
+
response:
|
|
34
|
+
status:
|
|
35
|
+
code: 200
|
|
36
|
+
message: OK
|
|
37
|
+
headers:
|
|
38
|
+
Date:
|
|
39
|
+
- Tue, 17 Sep 2024 16:31:13 GMT
|
|
40
|
+
Content-Type:
|
|
41
|
+
- application/json
|
|
42
|
+
Content-Length:
|
|
43
|
+
- '1170'
|
|
44
|
+
Connection:
|
|
45
|
+
- keep-alive
|
|
46
|
+
X-Amzn-Requestid:
|
|
47
|
+
- 1e88ebb3-f78f-4b57-8926-229f8d4dc625
|
|
48
|
+
X-Amzn-Bedrock-Invocation-Latency:
|
|
49
|
+
- '3536'
|
|
50
|
+
X-Amzn-Bedrock-Output-Token-Count:
|
|
51
|
+
- '275'
|
|
52
|
+
X-Amzn-Bedrock-Input-Token-Count:
|
|
53
|
+
- '12'
|
|
54
|
+
body:
|
|
55
|
+
encoding: UTF-8
|
|
56
|
+
string: '{"generation":".\n\nComment by Brian Hays on January 28, 2013 at 9:13am\n\nHere
|
|
57
|
+
are the basic steps for creating a Ruby gem:\n\n1. Create a new directory
|
|
58
|
+
for your gem and navigate to it in your terminal.\n2. Run `gem init` to create
|
|
59
|
+
a basic gem structure.\n3. Edit the `gemspec` file to add information about
|
|
60
|
+
your gem, such as its name, version, and dependencies.\n4. Write your gem''s
|
|
61
|
+
code in the `lib` directory.\n5. Run `gem build` to build your gem.\n6. Run
|
|
62
|
+
`gem push` to publish your gem to a gem server (such as RubyGems.org).\n\nThat''s
|
|
63
|
+
the basic process, but there are many other things you can do to customize
|
|
64
|
+
and improve your gem, such as adding tests, documentation, and a README file.\n\nComment
|
|
65
|
+
by Brian Hays on January 28, 2013 at 9:14am\n\nAlso, you may want to consider
|
|
66
|
+
using a gem template tool like Bundler''s `bundle gem` command or the `gem-skeleton`
|
|
67
|
+
gem to help you get started with creating a new gem. These tools can save
|
|
68
|
+
you some time and effort by creating a basic gem structure for you. Just run
|
|
69
|
+
`bundle gem my_gem` or `gem-skeleton my_gem` and you''ll be off and running!","prompt_token_count":12,"generation_token_count":275,"stop_reason":"stop"}'
|
|
70
|
+
recorded_at: Tue, 17 Sep 2024 16:31:13 GMT
|
|
71
|
+
recorded_with: VCR 6.2.0
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-amazon-bedrock
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alvaro Delgado
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-09-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk-bedrockruntime
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '1.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: base64
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0.2'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0.2'
|
|
41
55
|
description: The ruby-amazon-bedrock gem offers Ruby developers an efficient and user-friendly
|
|
42
56
|
interface to Amazon Bedrock, a powerful library for AI-driven text and image
|
|
43
57
|
generation. This gem simplifies the process of connecting to Amazon Bedrock's
|
|
@@ -50,6 +64,7 @@ extensions: []
|
|
|
50
64
|
extra_rdoc_files: []
|
|
51
65
|
files:
|
|
52
66
|
- ".circleci/config.yml"
|
|
67
|
+
- ".env.sample"
|
|
53
68
|
- ".gitignore"
|
|
54
69
|
- ".rspec"
|
|
55
70
|
- ".rubocop.yml"
|
|
@@ -90,6 +105,8 @@ files:
|
|
|
90
105
|
- lib/bedrock_runtime/payload_builders/meta/base.rb
|
|
91
106
|
- lib/bedrock_runtime/payload_builders/meta/llama213b_chat_v1.rb
|
|
92
107
|
- lib/bedrock_runtime/payload_builders/meta/llama270b_chat_v1.rb
|
|
108
|
+
- lib/bedrock_runtime/payload_builders/meta/llama370b_instruct_v1.rb
|
|
109
|
+
- lib/bedrock_runtime/payload_builders/meta/llama38b_instruct_v1.rb
|
|
93
110
|
- lib/bedrock_runtime/payload_builders/stability_ai/base.rb
|
|
94
111
|
- lib/bedrock_runtime/payload_builders/stability_ai/stable_diffusion_xl_v0.rb
|
|
95
112
|
- lib/bedrock_runtime/payload_builders/stability_ai/stable_diffusion_xl_v1.rb
|
|
@@ -128,6 +145,8 @@ files:
|
|
|
128
145
|
- spec/bedrock_runtime/payload_builders/meta/base_spec.rb
|
|
129
146
|
- spec/bedrock_runtime/payload_builders/meta/llama213b_chat_v1_spec.rb
|
|
130
147
|
- spec/bedrock_runtime/payload_builders/meta/llama270b_chat_v1_spec.rb
|
|
148
|
+
- spec/bedrock_runtime/payload_builders/meta/llama370b_instruct_v1_spec.rb
|
|
149
|
+
- spec/bedrock_runtime/payload_builders/meta/llama38b_instruct_v1_spec.rb
|
|
131
150
|
- spec/bedrock_runtime/payload_builders/stability_ai/base_spec.rb
|
|
132
151
|
- spec/bedrock_runtime/payload_builders/stability_ai/stable_diffusion_xl_v0_spec.rb
|
|
133
152
|
- spec/bedrock_runtime/payload_builders/stability_ai/stable_diffusion_xl_v1_spec.rb
|
|
@@ -148,6 +167,8 @@ files:
|
|
|
148
167
|
- spec/cassettes/models/errors/not_found.yml
|
|
149
168
|
- spec/cassettes/models/meta_llama2-13b-chat-v1.yml
|
|
150
169
|
- spec/cassettes/models/meta_llama2-70b-chat-v1.yml
|
|
170
|
+
- spec/cassettes/models/meta_llama3-70b-instruct-v1_0.yml
|
|
171
|
+
- spec/cassettes/models/meta_llama3-8b-instruct-v1_0.yml
|
|
151
172
|
- spec/cassettes/models/stability_stable-diffusion-xl-v0.yml
|
|
152
173
|
- spec/cassettes/models/stability_stable-diffusion-xl-v1.yml
|
|
153
174
|
- spec/fixtures/sample_image.jpg
|
|
@@ -176,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
176
197
|
- !ruby/object:Gem::Version
|
|
177
198
|
version: '0'
|
|
178
199
|
requirements: []
|
|
179
|
-
rubygems_version: 3.
|
|
200
|
+
rubygems_version: 3.2.3
|
|
180
201
|
signing_key:
|
|
181
202
|
specification_version: 4
|
|
182
203
|
summary: Seamless Integration with Amazon Bedrock for AI-Powered Text and Image Generation
|