Amazon Bedrock
Amazon Bedrock 是一项托管服务,通过统一的 API,提供来自各种 AI 供应商的基础模型。
Spring AI 通过实现 Spring 接口 ChatClient
、StreamingChatClient
和 EmbeddingClient
,支持 Amazon Bedrock 中提供的所有聊天和嵌入式 AI 模型。
此外,Spring AI 为所有客户端提供 Spring 自动配置和启动器,使其轻松启动和配置 Bedrock 模型。
开始的几个步骤如下:
-
添加 Boot Starter:将 Spring Boot Bedrock 的启动器添加到您的项目中。
-
获取 AWS 凭据:如果您还没有 AWS 帐户并且尚未配置 AWS CLI,请参考此视频指南: AWS CLI & SDK 在 4 分钟内设置完毕!。您应该能够获取到您的访问和安全密钥。
-
启用 Bedrock 模型:转到 Amazon Bedrock,在左侧的 Model Access 菜单中,配置您将要使用的模型的访问权限。
项目依赖
然后将 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=您的访问密钥
spring.ai.bedrock.aws.secret-key=您的安全密钥
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/credentials
),由所有 AWS SDK 和 AWS CLI 共享。 -
通过 Amazon EC2 容器服务传递的凭证,如果设置了
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
环境变量,并且安全管理器有权限访问该变量。 -
通过 Amazon EC2 元数据服务传递的实例配置文件凭证,或设置
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量。
启用选定的Bedrock模型
默认情况下,所有模型都是禁用的。您必须显式使用 spring.ai.bedrock.<model>.<chat|embedding>.enabled=true 属性来启用所选择的Bedrock模型。 |
以下是支持的 <model>
和 <chat|embedding>
组合:
模型 | 聊天 | 聊天流 | 嵌入 |
---|---|---|---|
llama2 |
是 |
是 |
否 |
cohere |
是 |
是 |
是 |
anthropic |
是 |
是 |
否 |
jurassic2 (WIP) |
是 |
否 |
否 |
titan |
是 |
是 |
是 (但是,不支持批处理) |
例如,要启用Bedrock Llama2 Chat客户端,您需要设置 spring.ai.bedrock.llama2.chat.enabled=true
。
接下来,您可以使用 spring.ai.bedrock.<model>.<chat|embedding>.*
属性来配置每个提供的模型。
有关更多信息,请参阅下面每个支持模型的文档。
-
Spring AI Bedrock Anthropic Chat:
spring.ai.bedrock.anthropic.chat.enabled=true
-
Spring AI Bedrock Llama2 Chat:
spring.ai.bedrock.llama2.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