= Amazon Bedrock
link:https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html[Amazon Bedrock] is a managed service that provides foundation models from various AI providers, available through a unified API.
Spring AI supports https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-arns.html[all the Chat and Embedding AI models] available through Amazon Bedrock by implementing the Spring interfaces ChatClient
, StreamingChatClient
, and EmbeddingClient
.
Additionally, Spring AI provides Spring Auto-Configurations and Boot Starters for all clients, making it easy to bootstrap and configure for the Bedrock models.
== Getting Started
There are a few steps to get started
- Add Boot Starter: Add the Spring Boot starter for Bedrock to your project.
- Obtain AWS credentials: If you don’t have an AWS account and AWS CLI configured yet, this video guide can help you configure it: link:https://youtu.be/gswVHTrRX8I?si=buaY7aeI0l3-bBVb[AWS CLI & SDK Setup in Less Than 4 Minutes!]. You should be able to obtain your access and security keys.
- Enable Bedrock models to use: Go to link:https://us-east-1.console.aws.amazon.com/bedrock/home[Amazon Bedrock] and from the link:https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/modelaccess[Model Access] menu on the left, configure access to the models you are going to use.
=== Project Dependencies
Then add the Spring Boot Starter dependency to your project’s Maven pom.xml
build file:
[source,xml]
or to your Gradle build.gradle
build file.
[source,groovy]
dependencies {
implementation ‘org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter’
}
TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file.
=== Connect to AWS Bedrock
Use the BedrockAwsConnectionProperties
to configure AWS credentials and region:
[source,shell]
spring.ai.bedrock.aws.region=us-east-1
spring.ai.bedrock.aws.access-key=YOUR_ACCESS_KEY
spring.ai.bedrock.aws.secret-key=YOUR_SECRET_KEY
The region
property is compulsory.
AWS credentials are resolved in the following order:
- Spring-AI Bedrock
spring.ai.bedrock.aws.access-key
andspring.ai.bedrock.aws.secret-key
properties. - Java System Properties -
aws.accessKeyId
andaws.secretAccessKey
. - Environment Variables -
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
. - Web Identity Token credentials from system properties or environment variables.
- Credential profiles file at the default location (
~/.aws/credentials
) shared by all AWS SDKs and the AWS CLI. - Credentials delivered through the Amazon EC2 container service if the
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
environment variable is set and the security manager has permission to access the variable. - Instance profile credentials delivered through the Amazon EC2 metadata service or set the
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
environment variables.
=== Enable selected Bedrock model
NOTE: By default, all models are disabled. You have to enable the chosen Bedrock models explicitly using the spring.ai.bedrock.<model>.<chat|embedding>.enabled=true
property.
Here are the supported <model>
and <chat|embedding>
combinations:
[cols=”|,|,|,|”]
|====
| Model | Chat | Chat Streaming | Embedding
| llama2 | Yes | Yes | No
| cohere | Yes | Yes | Yes
| anthropic | Yes | Yes | No
| jurassic2 (WIP) | Yes | No | No
| titan | Yes | Yes | Yes (however, no batch support)
|====
For example, to enable the Bedrock Llama2 Chat client, you need to set spring.ai.bedrock.llama2.chat.enabled=true
.
Next, you can use the spring.ai.bedrock.<model>.<chat|embedding>.*
properties to configure each model as provided.
For more information, refer to the documentation below for each supported model.
- xref:api/clients/bedrock/bedrock-anthropic.adoc[Spring AI Bedrock Anthropic Chat]:
spring.ai.bedrock.anthropic.chat.enabled=true
- xref:api/clients/bedrock/bedrock-llama2.adoc[Spring AI Bedrock Llama2 Chat]:
spring.ai.bedrock.llama2.chat.enabled=true
- xref:api/clients/bedrock/bedrock-cohere.adoc[Spring AI Bedrock Cohere Chat]:
spring.ai.bedrock.cohere.chat.enabled=true
- xref:api/embeddings/bedrock-cohere-embedding.adoc[Spring AI Bedrock Cohere Embeddings]:
spring.ai.bedrock.cohere.embedding.enabled=true
- xref:api/clients/bedrock/bedrock-titan.adoc[Spring AI Bedrock Titan Chat]:
spring.ai.bedrock.titan.chat.enabled=true
- xref:api/embeddings/bedrock-titan-embedding.adoc[Spring AI Bedrock Titan Embeddings]:
spring.ai.bedrock.titan.embedding.enabled=true
// * xref:api/clients/bedrock/bedrock-jurassic2-chat.adoc[(WIP)Spring AI Bedrock Jurassic Chat]: spring.ai.bedrock.jurassic2.chat.enabled=true
最后编辑:Jeebiz 更新时间:2024-07-06 19:00