获取最新的快照版本,请使用 Spring AI 1.1.3spring-doc.cadn.net.cn

OCI 生成式AI Cohere聊天

OCI GenAI 服务 提供按需模型或专用 AI 集群的生成式 AI 聊天。spring-doc.cadn.net.cn

OCI 聊天模型页面OCI 生成式 AI Playground 提供了有关在 OCI 上使用和托管聊天模型的详细信息。spring-doc.cadn.net.cn

前提条件

您需要一个有效的Oracle Cloud Infrastructure (OCI) 帐户才能使用 OCI GenAI Cohere Chat 客户端。该客户端提供四种不同的连接方式,包括使用用户和私钥进行简单身份验证、工作负载身份验证、实例主控身份验证或 OCI 配置文件身份验证。spring-doc.cadn.net.cn

添加仓库和BOM

Spring AI 工件发布在 Maven Central 和 Spring Snapshot 仓库中。 请参阅 工件仓库 部分,以将这些仓库添加到您的构建系统。spring-doc.cadn.net.cn

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

自动配置

There has been a significant change in the Spring AI auto-configuration, starter modules' artifact names. Please refer to the 升级说明以获取更多信息。spring-doc.cadn.net.cn

Spring AI 为 OCI GenAI Cohere Chat Client 提供了 Spring Boot 自动配置。 要启用它,请将以下依赖项添加到项目的 Maven pom.xml 文件中:spring-doc.cadn.net.cn

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-oci-genai</artifactId>
</dependency>

或者添加到您的Gradle 构建脚本文件中。spring-doc.cadn.net.cn

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-oci-genai'
}
参考以下依赖管理部分,添加Spring AI BOM到你的构建文件中。

聊天属性

连接属性

前缀 spring.ai.oci.genai 是用于配置与OCI GenAI连接的属性前缀。spring-doc.cadn.net.cn

属性 描述 默认

spring.ai.oci.genai.authenticationTypespring-doc.cadn.net.cn

向OCI进行身份验证时使用的认证类型。可以是fileinstance-principalworkload-identitysimplespring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

spring.ai.oci.genai.regionspring-doc.cadn.net.cn

OCI 服务区域。spring-doc.cadn.net.cn

us-chicago-1spring-doc.cadn.net.cn

spring.ai.oci.genai.tenantIdspring-doc.cadn.net.cn

OCI租户OCID,用于与simple认证方式一起验证时。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.userIdspring-doc.cadn.net.cn

OCI用户OCID,用于与simple认证方式一起验证身份时。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.fingerprintspring-doc.cadn.net.cn

私钥指纹,用于与simple认证时进行身份验证。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.privateKeyspring-doc.cadn.net.cn

私钥内容,用于与simple认证方式一起进行身份验证时使用。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.passPhrasespring-doc.cadn.net.cn

可选的私钥密码短语,用于在使用simple认证和保护了密码的私钥时进行身份验证。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.filespring-doc.cadn.net.cn

OCI配置文件的路径。用于与file认证方式一起进行身份验证时。spring-doc.cadn.net.cn

用户主目录下的/.oci/configspring-doc.cadn.net.cn

spring.ai.oci.genai.profilespring-doc.cadn.net.cn

OCI配置文件名。用于与file认证方式一起进行身份验证时使用。spring-doc.cadn.net.cn

DEFAULTspring-doc.cadn.net.cn

spring.ai.oci.genai.endpointspring-doc.cadn.net.cn

可选的OCI GenAI端点。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

配置属性

聊天自动配置的启用与禁用现在通过带有前缀 spring.ai.model.chat 的顶级属性进行配置。 要启用,spring.ai.model.chat=oci-genai(默认已启用) 要禁用,spring.ai.model.chat=none(或任何不匹配 oci-genai 的值) 此更改旨在允许配置多个模型。spring-doc.cadn.net.cn

前缀 spring.ai.oci.genai.cohere.chat 是用于配置 OCI GenAI Cohere Chat 的 ChatModel 实现的属性前缀。spring-doc.cadn.net.cn

属性 描述 默认

spring.ai.model.chatspring-doc.cadn.net.cn

启用 OCI GenAI Cohere 聊天模型。spring-doc.cadn.net.cn

oci-genaispring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.enabled(不再有效)spring-doc.cadn.net.cn

启用 OCI GenAI Cohere 聊天模型。spring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.modelspring-doc.cadn.net.cn

模型 OCID 或端点spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.compartmentspring-doc.cadn.net.cn

模型隔间OCID。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.servingModespring-doc.cadn.net.cn

要使用的模型服务模式。可以是 on-demand,或 dedicatedspring-doc.cadn.net.cn

on-demandspring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.preambleOverridespring-doc.cadn.net.cn

覆盖聊天模型的提示前缀spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.temperaturespring-doc.cadn.net.cn

推理温度spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.topPspring-doc.cadn.net.cn

Top P 参数spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.topKspring-doc.cadn.net.cn

Top K 参数spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.frequencyPenaltyspring-doc.cadn.net.cn

更高的值会减少重复的标记,输出也会更加随机。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.presencePenaltyspring-doc.cadn.net.cn

更高的值会鼓励生成包含未使用标记的输出。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.stopspring-doc.cadn.net.cn

将结束补全生成的文本序列列表。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

spring.ai.oci.genai.cohere.chat.options.documentsspring-doc.cadn.net.cn

聊天上下文中使用的文档列表。spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

所有以spring.ai.oci.genai.cohere.chat.options为前缀的属性都可以通过向Prompt调用中添加特定于请求的运行时选项在运行时覆盖。

运行时选项

The OCICohereChatOptions.java provides model configurations, such as the model to use, the temperature, the frequency penalty, etc.spring-doc.cadn.net.cn

On start-up, the default options can be configured with the OCICohereChatModel(api, options) constructor or the spring.ai.oci.genai.cohere.chat.options.* properties.spring-doc.cadn.net.cn

在运行时,您可以通过向Prompt调用添加新的、针对请求的选项来覆盖默认选项。 例如,要为特定请求覆盖默认模型和温度:spring-doc.cadn.net.cn

ChatResponse response = chatModel.call(
    new Prompt(
        "Generate the names of 5 famous pirates.",
        OCICohereChatOptions.builder()
            .model("my-model-ocid")
            .compartment("my-compartment-ocid")
            .temperature(0.5)
        .build()
    ));

示例控制器

创建一个新的Spring Boot项目,并将spring-boot-starter-web添加到您的pom(或gradle)依赖中。spring-doc.cadn.net.cn

添加一个 application.properties 文件,位于 src/main/resources 目录下,以启用并配置 OCI GenAI Cohere 聊天模型:spring-doc.cadn.net.cn

spring.ai.oci.genai.authenticationType=file
spring.ai.oci.genai.file=/path/to/oci/config/file
spring.ai.oci.genai.cohere.chat.options.compartment=my-compartment-ocid
spring.ai.oci.genai.cohere.chat.options.servingMode=on-demand
spring.ai.oci.genai.cohere.chat.options.model=my-chat-model-ocid
filecompartmentmodel 替换为您的 OCI 账户中的值。

这将创建一个OCICohereChatModel实现,您可以将其注入到您的类中。 以下是一个使用聊天模型进行文本生成的简单@Controller类的例子。spring-doc.cadn.net.cn

@RestController
public class ChatController {

    private final OCICohereChatModel chatModel;

    @Autowired
    public ChatController(OCICohereChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", chatModel.call(message));
    }

    @GetMapping("/ai/generateStream")
	public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        var prompt = new Prompt(new UserMessage(message));
        return chatModel.stream(prompt);
    }
}

手动配置

The OCICohereChatModel implements the ChatModel and uses the OCI Java SDK to connect to the OCI GenAI service.spring-doc.cadn.net.cn

spring-ai-oci-genai 依赖添加到您项目的 Maven pom.xml 文件中:spring-doc.cadn.net.cn

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-oci-genai</artifactId>
</dependency>

或者添加到您的Gradle 构建脚本文件中。spring-doc.cadn.net.cn

dependencies {
    implementation 'org.springframework.ai:spring-ai-oci-genai'
}
参考以下依赖管理部分,添加Spring AI BOM到你的构建文件中。

接下来,创建一个OCICohereChatModel并用它来生成文本:spring-doc.cadn.net.cn

var CONFIG_FILE = Paths.get(System.getProperty("user.home"), ".oci", "config").toString();
var COMPARTMENT_ID = System.getenv("OCI_COMPARTMENT_ID");
var MODEL_ID = System.getenv("OCI_CHAT_MODEL_ID");

ConfigFileAuthenticationDetailsProvider authProvider = new ConfigFileAuthenticationDetailsProvider(
        CONFIG_FILE,
        "DEFAULT"
);
var genAi = GenerativeAiInferenceClient.builder()
        .region(Region.valueOf("us-chicago-1"))
        .build(authProvider);

var chatModel = new OCICohereChatModel(genAi, OCICohereChatOptions.builder()
        .model(MODEL_ID)
        .compartment(COMPARTMENT_ID)
        .servingMode("on-demand")
        .build());

ChatResponse response = chatModel.call(
        new Prompt("Generate the names of 5 famous pirates."));

数字OCICohereChatOptions为聊天请求提供了配置信息。 数字OCICohereChatOptions.Builder是流利选项构建器。spring-doc.cadn.net.cn