Cohere Chat

提供 Bedrock Cohere Chat 客户端。将生成式 AI 能力整合到关键应用和流程中,以改善业务成果。

AWS Bedrock Cohere Model 页面Amazon Bedrock 用户指南 包含有关如何使用 AWS 托管模型的详细信息。

前提条件

请参考 Amazon Bedrock 上的 Spring AI 文档来设置 API 访问。

添加仓库和 BOM

Spring AI 的构件发布在 Spring 里程碑仓库和快照仓库中。请参考 仓库 部分将这些仓库添加到您的构建系统中。

为了帮助依赖管理,Spring AI 提供了一个 BOM(材料清单),以确保整个项目中使用一致的 Spring AI 版本。请参考 依赖管理 部分将 Spring AI BOM 添加到您的构建系统中。

自动配置

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'
}
参考依赖管理部分,将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的连接的属性前缀。

属性 描述 默认值

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。查看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默认值

查看CohereChatModel了解其他模型ID。支持的值包括:cohere.command-light-text-v14cohere.command-text-v14。模型ID值也可以在AWS Bedrock文档中的基本模型ID中找到。

所有以spring.ai.bedrock.cohere.chat.options为前缀的属性都可以通过在Prompt调用中添加一个请求特定的聊天选项来在运行时进行覆盖。
### 聊天选项 - **BedrockCohereChatOptions.java** 提供模型配置,如温度、topK、topP等。 - 在启动时,可以使用 `BedrockCohereChatClient(api, options)` 构造函数或 `spring.ai.bedrock.cohere.chat.options.*` 属性配置默认选项。 - 在运行时,可以通过向 `Prompt` 调用添加新的、特定请求的选项来覆盖默认选项。例如,要覆盖特定请求的默认温度: java ChatResponse response = chatClient.call( new Prompt( "生成5位著名海盗的名字。", BedrockCohereChatOptions.builder() .withTemperature(0.4) .build() )); > **提示:** 除了模型特定的 `BedrockCohereChatOptions`,您还可以使用可移植的 `ChatOptions` 实例,使用 `ChatOptionsBuilder#builder()` 创建。 ### 示例控制器自动配置 - 创建一个新的 Spring Boot 项目,并将 `spring-ai-bedrock-ai-spring-boot-starter` 添加到您的 pom(或 gradle)依赖中。 - 添加一个 `application.properties` 文件,在 `src/main/resources` 目录下,以启用并配置 Cohere 聊天客户端: none 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 > **提示:** 用您的 AWS 凭据替换 `regions`、`access-key` 和 `secret-key`。 - 这将创建一个您可以注入到类中的 `BedrockCohereChatClient` 实现。下面是一个使用聊天客户端生成文本的简单 `@Controller` 类示例: java @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 generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { Prompt prompt = new Prompt(new UserMessage(message)); return chatClient.stream(prompt); } } 这些步骤展示了如何配置和使用 Spring AI 中的聊天功能。
markdown

手动配置

BedrockCohereChatClient 实现了 ChatClientStreamingChatClient,并使用 Low-level CohereChatBedrockApi Client 来连接到 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'
}
请参考 Dependency Management 部分,将 Spring AI BOM 添加到您的构建文件中。

接下来,创建一个 BedrockCohereChatClient 并用于文本生成:

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("生成5位著名海盗的名字。"));

// 或者使用流式响应
Flux<ChatResponse> response = chatClient.stream(
    new Prompt("生成5位著名海盗的名字。"));

低级别 CohereChatBedrockApi 客户端

CohereChatBedrockApi 提供了一个轻量级的 Java 客户端,位于 AWS Bedrock