提供基石Cohere聊天客户端。将生成式AI能力整合到提升业务成果的关键应用程序和工作流程中。
AWS Bedrock Cohere模型页面和Amazon Bedrock用户指南包含了如何使用AWS托管模型的详细信息。
先决条件
请参考亚马逊Bedrock上的Spring AI文档以设置API访问。
自动配置
将`spring-ai-bedrock-ai-spring-boot-starter`依赖项添加到项目的Maven `pom.xml`文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bedrock-ai-spring-boot-starter</artifactId>
</dependency>
或添加到你的Gradle build.gradle
构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter'
}
Tip
|
参考依赖管理部分,将Spring AI BOM添加到您的构建文件中。 |
启用Cohere聊天支持
默认情况下,Cohere模型是禁用的。要启用它,请将`spring.ai.bedrock.cohere.chat.enabled`属性设置为`true`。导出环境变量是设置此配置属性的一种方式:
export SPRING_AI_BEDROCK_COHERE_CHAT_ENABLED=true
聊天属性
前缀 spring.ai.bedrock.aws
是用于配置连接到 AWS Bedrock 的属性前缀。
Property |
Description |
Default |
spring.ai.bedrock.aws.region |
使用的AWS区域。 |
|
us-east-1 |
spring.ai.bedrock.aws.access-key |
|
AWS访问密钥。 |
- |
|
spring.ai.bedrock.aws.secret-key |
AWS密钥。 |
- |
前缀 spring.ai.bedrock.cohere.chat
是用来配置 Cohere 聊天客户端实现的属性前缀。
属性 |
描述 |
默认值 |
------------------------------------------ |
--------------------------------------------------------------------- |
------------- |
spring.ai.bedrock.cohere.chat.enabled |
启用或禁用对Cohere的支持 |
false |
spring.ai.bedrock.cohere.chat.model |
使用的模型id。参见https://github.com/spring-projects/spring-ai/blob/4ba9a3cd689b9fd3a3805f540debe398a079c6ef/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java#L326C14-L326C29[CohereChatModel]了解支持的模型。 |
cohere.command-text-v14 |
spring.ai.bedrock.cohere.chat.options.temperature |
控制输出的随机性。值范围可以是[0.0,1.0] |
0.7 |
spring.ai.bedrock.cohere.chat.options.topP |
在采样时考虑的最高累积概率。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.topK |
指定模型生成下一个词元时使用的选项数量。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.maxTokens |
指定生成响应中使用的最大词元数量。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.stopSequences |
配置模型识别的最多四个序列。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.returnLikelihoods |
返回的响应中包含了词元可能性。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.numGenerations |
模型应返回的最大生成次数。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.logitBias |
防止模型产生不想要的词元或者激励模型包含特定的词元。 |
AWS Bedrock默认值 |
spring.ai.bedrock.cohere.chat.options.truncate |
指定API处理超过最大词元长度的输入的方式。 |
AWS Bedrock默认值 |
查看https://github.com/spring-projects/spring-ai/blob/4ba9a3cd689b9fd3a3805f540debe398a079c6ef/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java#L326C14-L326C29[CohereChatModel]了解其他模型ID。支持的值包括:cohere.command-light-text-v14`和`cohere.command-text-v14
。模型ID的值也可以在https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-arns.html[AWS Bedrock文档中的基础模型ID]找到。
Tip
|
所有以 spring.ai.bedrock.cohere.chat.options 为前缀的属性可以在运行时被覆盖,方法是在 Prompt 调用中添加一个特定于请求的 运行时选项。
|
运行时选项
The BedrockCohereChatOptions.java 提供模型配置,例如温度、topK、topP等。
在启动时,可以通过 BedrockCohereChatClient(api, options)
构造函数或 spring.ai.bedrock.cohere.chat.options.*
属性来配置默认选项。
在运行时,您可以通过添加新的、特定于请求的选项到`Prompt`调用中来覆盖默认选项。例如,为了覆盖特定请求的默认温度:
ChatResponse response = chatClient.call(
new Prompt(
"Generate the names of 5 famous pirates.",
BedrockCohereChatOptions.builder()
.withTemperature(0.4)
.build()
));
样本控制器
'''创建一个新的Spring Boot项目,并将`spring-ai-bedrock-ai-spring-boot-starter`添加到你的pom(或gradle)依赖中。'''
在`src/main/resources`目录下添加一个`application.properties`文件,以启用和配置Cohere Chat客户端:
spring.ai.bedrock.aws.region=eu-central-1
spring.ai.bedrock.aws.access-key=${AWS_ACCESS_KEY_ID}
spring.ai.bedrock.aws.secret-key=${AWS_SECRET_ACCESS_KEY}
spring.ai.bedrock.cohere.chat.enabled=true
spring.ai.bedrock.cohere.chat.options.temperature=0.8
Tip
|
将 regions 、access-key 和 secret-key 替换成你的 AWS 凭证。
|
这将创建一个 BedrockCohereChatClient
实现,你可以将其注入到你的类中。这里有一个使用聊天客户端进行文本生成的简单 @Controller
类的示例。
@RestController
public class ChatController {
private final BedrockCohereChatClient chatClient;
@Autowired
public ChatController(BedrockCohereChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatClient.call(message));
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.stream(prompt);
}
}
手动配置
The BedrockCohereChatClient实现了`ChatClient`和`StreamingChatClient`,并使用[low-level-api]连接到Bedrock Cohere服务。
将`spring-ai-bedrock`依赖项添加到项目的Maven `pom.xml`文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bedrock</artifactId>
</dependency>
或添加到你的Gradle build.gradle
构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-bedrock'
}
Tip
|
参考依赖管理部分,将Spring AI BOM添加到您的构建文件中。 |
接下来,创建一个[BedrockCohereChatClient](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClient.java) 并使用它来进行文本生成:
CohereChatBedrockApi api = new CohereChatBedrockApi(CohereChatModel.COHERE_COMMAND_V14.id(),
EnvironmentVariableCredentialsProvider.create(), Region.US_EAST_1.id(), new ObjectMapper());
BedrockCohereChatClient chatClient = new BedrockCohereChatClient(api,
BedrockCohereChatOptions.builder()
.withTemperature(0.6f)
.withTopK(10)
.withTopP(0.5f)
.withMaxTokens(678)
.build()
ChatResponse response = chatClient.call(
new Prompt("Generate the names of 5 famous pirates."));
// Or with streaming responses
Flux<ChatResponse> response = chatClient.stream(
new Prompt("Generate the names of 5 famous pirates."));
低级别CohereChatBedrockApi客户端
'''The [CohereChatBedrockApi](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java) 提供的是一个轻量级的 Java 客户端,构建在 AWS Bedrock 的 [Cohere Command 模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command.html)之上。'''
以下类图演示了CohereChatBedrockApi接口和构建块:
CohereChatBedrockApi支持`cohere.command-light-text-v14`和`cohere.command-text-v14`模型,用于同步(例如`chatCompletion())和流式(例如`chatCompletionStream()
)请求。
这是一个简单的代码片段,展示了如何以编程方式使用API:
CohereChatBedrockApi cohereChatApi = new CohereChatBedrockApi(
CohereChatModel.COHERE_COMMAND_V14.id(),
Region.US_EAST_1.id());
var request = CohereChatRequest
.builder("What is the capital of Bulgaria and what is the size? What it the national anthem?")
.withStream(false)
.withTemperature(0.5f)
.withTopP(0.8f)
.withTopK(15)
.withMaxTokens(100)
.withStopSequences(List.of("END"))
.withReturnLikelihoods(CohereChatRequest.ReturnLikelihoods.ALL)
.withNumGenerations(3)
.withLogitBias(null)
.withTruncate(Truncate.NONE)
.build();
CohereChatResponse response = cohereChatApi.chatCompletion(request);
var request = CohereChatRequest
.builder("What is the capital of Bulgaria and what is the size? What it the national anthem?")
.withStream(true)
.withTemperature(0.5f)
.withTopP(0.8f)
.withTopK(15)
.withMaxTokens(100)
.withStopSequences(List.of("END"))
.withReturnLikelihoods(CohereChatRequest.ReturnLikelihoods.ALL)
.withNumGenerations(3)
.withLogitBias(null)
.withTruncate(Truncate.NONE)
.build();
Flux<CohereChatResponse.Generation> responseStream = cohereChatApi.chatCompletionStream(request);
List<CohereChatResponse.Generation> responses = responseStream.collectList().block();