Amazon Bedrock
Amazon Bedrock 是一款托管服务,通过统一的 API 提供来自各种 AI 提供商的基础模型。
Spring AI 支持通过 Amazon Bedrock 提供的 所有聊天和嵌入式 AI 模型,方法是实现 Spring 接口 ChatModel
、StreamingChatModel
和 EmbeddingModel
。
此外,Spring AI 为所有客户端提供 Spring 自动配置和 Boot 启动器,使您可以轻松地引导和配置 Bedrock 模型。
入门
入门需要几个步骤
-
添加 Boot 启动器:将 Bedrock 的 Spring Boot 启动器添加到您的项目中。
-
获取 AWS 凭据:如果您还没有 AWS 帐户和 AWS CLI 配置,此视频指南可以帮助您配置它:AWS CLI & SDK Setup in Less Than 4 Minutes!。您应该能够获取访问密钥和安全密钥。
-
启用要使用的 Bedrock 模型:转到 Amazon Bedrock,然后从左侧的 模型访问 菜单中,配置对您将要使用的模型的访问权限。
项目依赖项
然后将 Spring Boot 启动器依赖项添加到您项目的 Maven pom.xml
构建文件中
<dependency>
<artifactId>spring-ai-bedrock-ai-spring-boot-starter</artifactId>
<groupId>org.springframework.ai</groupId>
</dependency>
或添加到您的 Gradle build.gradle
构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter'
}
请参考 依赖管理 部分将 Spring AI BOM 添加到您的构建文件中。 |
连接到 AWS Bedrock
使用 BedrockAwsConnectionProperties
配置 AWS 凭据和区域
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
spring.ai.bedrock.aws.timeout=10m
region
属性是必需的。
AWS 凭据将按以下顺序解析
-
Spring-AI Bedrock
spring.ai.bedrock.aws.access-key
和spring.ai.bedrock.aws.secret-key
属性。 -
Java 系统属性 -
aws.accessKeyId
和aws.secretAccessKey
。 -
环境变量 -
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。 -
来自系统属性或环境变量的 Web 身份令牌凭据。
-
所有 AWS SDK 和 AWS CLI 共享的默认位置(
~/.aws/credentials
)的凭据配置文件。 -
如果设置了
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
环境变量并且安全管理器有权访问该变量,则通过 Amazon EC2 容器服务提供的凭据。 -
通过 Amazon EC2 元数据服务提供的实例配置文件凭据,或设置
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量。
AWS 区域将按以下顺序解析
-
Spring-AI Bedrock
spring.ai.bedrock.aws.region
属性。 -
Java 系统属性 -
aws.region
。 -
环境变量 -
AWS_REGION
。 -
所有 AWS SDK 和 AWS CLI 共享的默认位置(
~/.aws/credentials
)的凭据配置文件。 -
通过 Amazon EC2 元数据服务提供的实例配置文件区域。
除了标准的 Spring-AI Bedrock 凭据和区域属性配置外,Spring-AI 还支持自定义 AwsCredentialsProvider
和 AwsRegionProvider
bean。
例如,同时使用 Spring-AI 和 适用于 Amazon Web Services 的 Spring Cloud。Spring-AI 与适用于 Amazon Web Services 的 Spring Cloud 凭据配置兼容。 |
启用选定的 Bedrock 模型
默认情况下,所有模型都已禁用。您必须使用 spring.ai.bedrock.<model>.<chat|embedding>.enabled=true 属性显式启用所选的 Bedrock 模型。
|
以下是支持的 <model>
和 <chat|embedding>
组合
模型 | 聊天 | 聊天流 | 嵌入 |
---|---|---|---|
llama |
是 |
是 |
否 |
jurassic2 |
是 |
否 |
否 |
cohere |
是 |
是 |
是 |
anthropic 2 |
是 |
是 |
否 |
anthropic 3 |
是 |
是 |
否 |
jurassic2 (WIP) |
是 |
否 |
否 |
titan |
是 |
是 |
是(但是,不支持批处理) |
例如,要启用 Bedrock Llama 聊天模型,您需要设置 spring.ai.bedrock.llama.chat.enabled=true
。
接下来,您可以使用 `spring.ai.bedrock.<model>.<chat|embedding>.*` 属性来配置每个模型,如提供的那样。
有关更多信息,请参阅下面每个受支持模型的文档。
-
Spring AI Bedrock Anthropic 2 Chat:
spring.ai.bedrock.anthropic.chat.enabled=true
-
Spring AI Bedrock Anthropic 3 Chat:
spring.ai.bedrock.anthropic.chat.enabled=true
-
Spring AI Bedrock Llama Chat:
spring.ai.bedrock.llama.chat.enabled=true
-
Spring AI Bedrock Cohere Chat:
spring.ai.bedrock.cohere.chat.enabled=true
-
Spring AI Bedrock Cohere Embeddings:
spring.ai.bedrock.cohere.embedding.enabled=true
-
Spring AI Bedrock Titan Chat:
spring.ai.bedrock.titan.chat.enabled=true
-
Spring AI Bedrock Titan Embeddings:
spring.ai.bedrock.titan.embedding.enabled=true
-
Spring AI Bedrock Ai21 Jurassic2 Chat:
spring.ai.bedrock.jurassic2.chat.enabled=true