Amazon Bedrock
遵循 Bedrock 的建议,Spring AI 已转向使用 Amazon Bedrock 的 Converse API 来实现所有 Chat 对话。Bedrock Converse API 具有以下主要优势:
- 统一接口:只需编写一次代码,即可用于任何受支持的 Amazon Bedrock 模型
- 模型灵活性:无需更改代码即可在不同对话模型之间无缝切换
- 扩展功能:通过专用结构支持特定于模型的参数
- 工具支持:原生集成函数调用和工具使用能力
- 多模态能力:内置对视觉及其他多模态功能的支持
- 面向未来:与 Amazon Bedrock 推荐的最佳实践保持一致
由于 Converse API 不支持嵌入(embedding)操作,因此这些操作将保留在当前 API 中,并且现有 InvokeModel API 中的嵌入模型功能将得到保留
Amazon Bedrock 是一种托管服务,它通过统一的 API 提供来自不同 AI 提供商的基础模型。
Spring AI 通过实现 Spring 的 EmbeddingModel 接口,支持在 Amazon Bedrock 中可用的 Embedding AI 模型。
此外,Spring AI 为所有客户端提供了 Spring 自动配置(Spring Auto-Configurations)和 Boot Starters,便于快速引导和配置以支持 Bedrock 模型。
入门教程
开始使用需遵循几个步骤
-
在您的项目中添加 Bedrock 的 Spring Boot starter。
-
获取 AWS 凭证:如果您尚未拥有 AWS 账户并配置 AWS CLI,此视频教程可以帮助您完成配置:4 分钟搞定 AWS CLI & SDK 设置!。您应该能够获取访问密钥和安全密钥。
-
启用要使用的模型:前往 Amazon Bedrock,在左侧的 模型访问 菜单中,配置对您将要使用的模型的访问权限。
项目依赖关系
然后在项目的 Maven pom.xml 构建文件中添加 Spring Boot Starter 依赖项:
<dependency>
<artifactId>spring-ai-starter-model-bedrock</artifactId>
<groupId>org.springframework.ai</groupId>
</dependency>
或者添加至您的 Gradle build.gradle 构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-bedrock'
}
如需在构建文件中添加 Spring AI BOM,请参见 Dependency Management 章节。
连接 AWS Bedrock
使用 BedrockAwsConnectionProperties 配置 AWS 凭证和区域:
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=10m
AWS 凭证的解析顺序如下:
-
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。
例如,同时使用 Spring AI 和 Spring Cloud for Amazon Web Services。Spring AI 与 Spring Cloud for Amazon Web Services 的凭证配置兼容。
启用已选 Bedrock 模型
默认情况下,所有模型均被禁用。您需要通过 spring.ai.model.embedding=<model-name> 属性显式启用所选的 Bedrock 模型。
以下是支持的 `<model-name>`:
| Model |
|---|
| bedrock-cohere |
| bedrock-titan(尚不支持批量) |
例如,若要启用 Bedrock Cohere 嵌入模型,需要设置 spring.ai.model.embedding=bedrock-cohere。
接下来,你可以使用 spring.ai.bedrock.<model>.embedding.* 属性,按照提供的方式配置各个模型。
有关更多信息,请参阅下面针对每个支持模型的文档。
-
Spring AI Bedrock Cohere Embeddings:
spring.ai.model.embedding=bedrock-cohere -
Spring AI Bedrock Titan Embeddings:
spring.ai.model.embedding=bedrock-titan
章节摘要
Cohere
提供 Bedrock Cohere Embedding 模型。将生成式 AI 能力集成到能够提升业务成果的核心应用和工作流中。
Titan
提供 Bedrock Titan 嵌入模型。Amazon Titan 基础模型(FMs)通过完全托管的 API,为客户提供高性能的图像、多模态嵌入及文本模型等多种选择。Amazon Titan 模型由 AWS 创建,并在大规模数据集上预训练,使其成为功能强大、通用的模型,能够支持多种使用场景,同时兼顾 AI 的负责任使用。您可以直接使用该模型,也可以利用自有数据进行私有化定制。