Amazon Bedrock
Amazon Bedrock 是一项托管服务,它提供来自各种 AI 提供商的基础模型,可通过统一的 API 使用。
Spring AI 支持通过 Amazon Bedrock 提供的所有聊天和嵌入 AI 模型,方法是实现 Spring 接口 ChatModel
、StreamingChatModel
和 EmbeddingModel
。
此外,Spring AI 为所有客户端提供了 Spring 自动配置和 Boot 启动器,从而可以轻松引导和配置 Bedrock 模型。
入门指南
入门需要几个步骤
-
将 Bedrock 的 Spring Boot 启动器添加到您的项目中。
-
获取 AWS 凭证:如果您还没有 AWS 账户和 AWS CLI 配置,此视频指南可以帮助您进行配置:在不到 4 分钟内设置 AWS CLI 和 SDK!。您应该能够获取您的访问密钥和安全密钥。
-
启用要使用的模型:转到Amazon Bedrock,然后从左侧的模型访问菜单配置对您将要使用的模型的访问权限。
项目依赖项
然后将 Spring Boot Starter 依赖项添加到项目的 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 聊天:
spring.ai.bedrock.anthropic.chat.enabled=true
-
Spring AI Bedrock Anthropic 3 聊天:
spring.ai.bedrock.anthropic3.chat.enabled=true
-
Spring AI Bedrock Llama 聊天:
spring.ai.bedrock.llama.chat.enabled=true
-
Spring AI Bedrock Cohere 聊天:
spring.ai.bedrock.cohere.chat.enabled=true
-
Spring AI Bedrock Cohere 嵌入:
spring.ai.bedrock.cohere.embedding.enabled=true
-
Spring AI Bedrock Titan 聊天:
spring.ai.bedrock.titan.chat.enabled=true
-
Spring AI Bedrock Titan 嵌入:
spring.ai.bedrock.titan.embedding.enabled=true
-
Spring AI Bedrock Ai21 Jurassic2 聊天:
spring.ai.bedrock.jurassic2.chat.enabled=true