主题
Amazon Bedrock
NOTE
遵循 Bedrock 的建议,Spring AI 已转向为 Spring AI 中所有 Chat 对话实现使用 Amazon Bedrock 的 Converse API。 Bedrock Converse API 有以下关键好处:
- 统一接口:一次编写代码即可与任何受支持的 Amazon Bedrock 模型协作
- 模型灵活性:在不同对话模型间无缝切换而无需改动代码
- 扩展功能:通过专门的结构支持模型特定参数
- 工具支持:与函数调用和工具使用能力原生集成
- 多模态能力:内建对视觉及其他多模态特性的支持
- 面向未来:与 Amazon Bedrock 建议的最佳实践对齐 Converse API 不支持嵌入操作,因此这些仍留在当前 API 中,现有
InvokeModel API里的嵌入模型功能将被保留
Amazon Bedrock 是一个托管服务,通过统一 API 提供来自各 AI 服务商的基础模型。
Spring AI 通过实现 Spring 的 EmbeddingModel 接口,支持 Amazon Bedrock 提供的嵌入 AI 模型。
此外,Spring AI 为所有客户端提供 Spring 自动配置与 Boot Starter,让你能为 Bedrock 模型轻松引导启动并完成配置。
开始使用
上手有几步
- 把 Bedrock 的 Spring Boot starter 添加到你的项目。
- 获取 AWS 凭据:若你还没有 AWS 账户、也尚未配置 AWS CLI,这个视频指南能帮你配置:AWS CLI & SDK Setup in Less Than 4 Minutes!。你应能获取到你的访问密钥和安全密钥。
- 启用要使用的模型:前往 Amazon Bedrock,从左侧的 Model Access 菜单,为你将要使用的模型配置访问。
项目依赖
然后把 Spring Boot Starter 依赖添加到你项目的 Maven pom.xml 构建文件:
xml
<dependency>
<artifactId>spring-ai-starter-model-bedrock</artifactId>
<groupId>org.springframework.ai</groupId>
</dependency>或添加到你的 Gradle build.gradle 构建文件。
groovy
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-bedrock'
}TIP
参见 依赖管理 一节,把 Spring AI BOM 添加到你的构建文件。
连接到 AWS Bedrock
用 BedrockAwsConnectionProperties 配置 AWS 凭据和区域:
shell
spring.ai.bedrock.aws.region=eu-north-1
spring.ai.bedrock.aws.access-key=YOUR_ACCESS_KEY
spring.ai.bedrock.aws.secret-key=YOUR_SECRET_KEY
spring.ai.bedrock.aws.profile.name=YOUR_PROFILE_NAME
spring.ai.bedrock.aws.profile.credentials-path=YOUR_CREDENTIALS_PATH
spring.ai.bedrock.aws.profile.configuration-path=YOUR_CONFIGURATION_PATH
spring.ai.bedrock.aws.timeout=10mAWS 凭据按以下顺序解析:
- Spring AI Bedrock 的
spring.ai.bedrock.aws.access-key和spring.ai.bedrock.aws.secret-key属性。 - Spring AI Bedrock 的
spring.ai.bedrock.aws.profile.name,若未指定spring.ai.bedrock.aws.profile.credentials-path和spring.ai.bedrock.aws.profile.configuration-path,Spring AI 会使用标准的 AWS 共享文件:凭据用~/.aws/credentials,配置用~/.aws/config。 - Java 系统属性 -
aws.accessKeyId和aws.secretAccessKey。 - 环境变量 -
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。 - 来自系统属性或环境变量的 Web Identity Token 凭据。
- 位于默认位置(
~/.aws/credentials)、由所有 AWS SDK 和 AWS CLI 共享的凭据配置档文件。 - 若设置了
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/credentials)、由所有 AWS SDK 和 AWS CLI 共享的凭据配置档文件。 - 通过 Amazon EC2 元数据服务交付的实例配置档区域。
- 若未定义区域,默认取
US_EAST_1
除了标准的 Spring AI Bedrock 凭据与区域属性配置外,Spring AI 还支持自定义的 AwsCredentialsProvider 和 AwsRegionProvider bean。
NOTE
例如,同时使用 Spring AI 与 Spring Cloud for Amazon Web Services。Spring AI 与 Spring Cloud for Amazon Web Services 的凭据配置兼容。
启用所选的 Bedrock 模型
NOTE
默认情况下所有模型都被禁用。你必须用 spring.ai.model.embedding=<model-name> 属性显式启用所选的 Bedrock 模型。
以下是受支持的 <model-name>:
| Model | bedrock-cohere | bedrock-titan (no batch support yet) | | --- | --- | --- | ---
例如,要启用 Bedrock Cohere 嵌入模型,你需要设置 spring.ai.model.embedding=bedrock-cohere。
接下来,你可以用 spring.ai.bedrock.<model>.embedding.* 属性按所提供的方式配置每个模型。
更多信息,参见下面每个受支持模型的文档。
- Spring AI Bedrock Cohere 嵌入:
spring.ai.model.embedding=bedrock-cohere - Spring AI Bedrock Titan 嵌入:
spring.ai.model.embedding=bedrock-titan