= 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

=== Project Dependencies

Then add the Spring Boot Starter dependency to your project’s Maven pom.xml build file:

[source,xml]

spring-ai-bedrock-ai-spring-boot-starter org.springframework.ai

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:

  1. Spring-AI Bedrock spring.ai.bedrock.aws.access-key and spring.ai.bedrock.aws.secret-key properties.
  2. Java System Properties - aws.accessKeyId and aws.secretAccessKey.
  3. Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
  4. Web Identity Token credentials from system properties or environment variables.
  5. Credential profiles file at the default location (~/.aws/credentials) shared by all AWS SDKs and the AWS CLI.
  6. 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.
  7. Instance profile credentials delivered through the Amazon EC2 metadata service or set the AWS_ACCESS_KEY_ID and AWS_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-04-05 23:47
最后编辑:Jeebiz  更新时间:2024-07-06 19:00
----