OCI GenAI Cohere Chat

OCI GenAI 服務 提供生成式 AI Chat 功能,支援按需模型或專用 AI 叢集。

OCI Chat 模型頁面OCI 生成式 AI Playground 提供了關於在 OCI 上使用和託管 Chat 模型的詳細資訊。

前置條件

您需要一個活躍的 Oracle Cloud Infrastructure (OCI) 賬戶才能使用 OCI GenAI Cohere Chat 客戶端。該客戶端提供了四種不同的連線方式,包括使用使用者和私鑰的簡單認證、工作負載身份認證、例項主體認證或 OCI 配置檔案的認證。

新增倉庫和 BOM

Spring AI artifacts 釋出在 Maven Central 和 Spring Snapshot 倉庫中。請參閱 倉庫 部分將這些倉庫新增到您的構建系統中。

為了幫助依賴管理,Spring AI 提供了一個 BOM(物料清單),以確保整個專案使用一致的 Spring AI 版本。請參閱 依賴管理 部分將 Spring AI BOM 新增到您的構建系統中。

自動配置

Spring AI 自動配置、starter 模組的 artifact 名稱發生了重大變化。請參閱 升級注意事項 瞭解更多資訊。

Spring AI 為 OCI GenAI Cohere Chat Client 提供了 Spring Boot 自動配置。要啟用它,請將以下依賴項新增到您的專案的 Maven pom.xml 檔案中

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

或新增到您的 Gradle build.gradle 構建檔案中。

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-oci-genai'
}
請參閱 依賴管理 部分將 Spring AI BOM 新增到您的構建檔案中。

Chat 屬性

連線屬性

字首 spring.ai.oci.genai 是用於配置連線到 OCI GenAI 的屬性字首。

屬性 描述 預設值

spring.ai.oci.genai.authenticationType

連線到 OCI 時使用的認證型別。可以是 file, instance-principal, workload-identity, 或 simple

file

spring.ai.oci.genai.region

OCI 服務區域。

us-chicago-1

spring.ai.oci.genai.tenantId

OCI 租戶 OCID,在使用 simple 認證時使用。

-

spring.ai.oci.genai.userId

OCI 使用者 OCID,在使用 simple 認證時使用。

-

spring.ai.oci.genai.fingerprint

私鑰指紋,在使用 simple 認證時使用。

-

spring.ai.oci.genai.privateKey

私鑰內容,在使用 simple 認證時使用。

-

spring.ai.oci.genai.passPhrase

可選的私鑰密碼,在使用 simple 認證和受密碼保護的私鑰時使用。

-

spring.ai.oci.genai.file

OCI 配置檔案路徑。在使用 file 認證時使用。

<使用者主目錄>/.oci/config

spring.ai.oci.genai.profile

OCI 配置檔名稱。在使用 file 認證時使用。

DEFAULT

spring.ai.oci.genai.endpoint

可選的 OCI GenAI 端點。

-

配置屬性

Chat 自動配置的啟用和停用現在透過字首為 spring.ai.model.chat 的頂層屬性進行配置。要啟用,設定 spring.ai.model.chat=oci-genai(預設啟用)。要停用,設定 spring.ai.model.chat=none(或任何不匹配 oci-genai 的值)。此更改是為了允許多個模型的配置。

字首 spring.ai.oci.genai.chat.cohere 是用於配置 OCI GenAI Cohere Chat 的 ChatModel 實現的屬性字首。

屬性 描述 預設值

spring.ai.model.chat

啟用 OCI GenAI Cohere Chat 模型。

oci-genai

spring.ai.oci.genai.chat.cohere.enabled (no longer valid)

啟用 OCI GenAI Cohere Chat 模型。

true

spring.ai.oci.genai.chat.cohere.options.model

模型 OCID 或端點

-

spring.ai.oci.genai.chat.cohere.options.compartment

模型隔間 OCID。

-

spring.ai.oci.genai.chat.cohere.options.servingMode

使用的模型服務模式。可以是 on-demanddedicated

on-demand

spring.ai.oci.genai.chat.cohere.options.preambleOverride

覆蓋 Chat 模型的 Prompt 前導語

-

spring.ai.oci.genai.chat.cohere.options.temperature

推理溫度

-

spring.ai.oci.genai.chat.cohere.options.topP

Top P 引數

-

spring.ai.oci.genai.chat.cohere.options.topK

Top K 引數

-

spring.ai.oci.genai.chat.cohere.options.frequencyPenalty

值越高將減少重複的 token,輸出將更隨機。

-

spring.ai.oci.genai.chat.cohere.options.presencePenalty

值越高會鼓勵生成包含未使用過的 token 的輸出。

-

spring.ai.oci.genai.chat.cohere.options.stop

將結束補全生成的文字序列列表。

-

spring.ai.oci.genai.chat.cohere.options.documents

Chat 上下文中使用的文件列表。

-

所有帶有 spring.ai.oci.genai.chat.cohere.options 字首的屬性都可以在執行時透過向 Prompt 呼叫新增請求特定的 執行時選項 來覆蓋。

執行時選項

OCICohereChatOptions.java 提供了模型配置,例如要使用的模型、溫度、頻率懲罰等。

啟動時,可以使用 OCICohereChatModel(api, options) 建構函式或 spring.ai.oci.genai.chat.cohere.options.* 屬性配置預設選項。

在執行時,您可以透過向 Prompt 呼叫新增新的、特定於請求的選項來覆蓋預設選項。例如,為特定請求覆蓋預設模型和溫度

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-ai-starter-model-oci-genai 新增到您的 pom(或 gradle)依賴項中。

src/main/resources 目錄下新增一個 application.properties 檔案,以啟用和配置 OCI GenAI Cohere Chat 模型

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
file, compartmentmodel 替換為您在 OCI 賬戶中的值。

這將建立一個 OCICohereChatModel 實現,您可以將其注入到您的類中。以下是一個簡單的 @Controller 類示例,它使用 Chat 模型進行文字生成。

@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);
    }
}

手動配置

OCICohereChatModel 實現了 ChatModel 介面並使用 OCI Java SDK 連線到 OCI GenAI 服務。

spring-ai-oci-genai 依賴項新增到您的專案的 Maven pom.xml 檔案中

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

或新增到您的 Gradle build.gradle 構建檔案中。

dependencies {
    implementation 'org.springframework.ai:spring-ai-oci-genai'
}
請參閱 依賴管理 部分將 Spring AI BOM 新增到您的構建檔案中。

接下來,建立並使用 OCICohereChatModel 進行文字生成

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 提供了 Chat 請求的配置資訊。OCICohereChatOptions.Builder 是一個流式的選項構建器。