OCI GenAI Cohere Chat

OCI GenAI 服務 提供隨需模型或專用 AI 叢集的生成式 AI 聊天功能。

OCI 聊天模型頁面OCI Generative AI Playground 提供關於在 OCI 上使用和託管聊天模型的詳細資訊。

先決條件

您需要一個有效的 Oracle Cloud Infrastructure (OCI) 帳戶才能使用 OCI GenAI Cohere Chat 用戶端。此用戶端提供四種不同的連線方式,包括使用使用者和私密金鑰的簡單驗證、工作負載身分、執行個體主體或 OCI 組態檔驗證。

新增儲存庫和 BOM

Spring AI 構件發佈在 Spring Milestone 和 Snapshot 儲存庫中。請參閱 儲存庫 章節,將這些儲存庫新增至您的建置系統。

為了協助進行相依性管理,Spring AI 提供了 BOM(物料清單),以確保在整個專案中使用一致版本的 Spring AI。請參閱 相依性管理 章節,將 Spring AI BOM 新增至您的建置系統。

自動組態

Spring AI 為 OCI GenAI Cohere Chat 用戶端提供 Spring Boot 自動組態。若要啟用它,請將以下相依性新增至您專案的 Maven pom.xml 檔案

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

或您的 Gradle build.gradle 建置檔案。

dependencies {
    implementation 'org.springframework.ai:spring-ai-oci-genai-spring-boot-starter'
}
請參閱 相依性管理 章節,將 Spring AI BOM 新增至您的建置檔案。

聊天屬性

連線屬性

字首 spring.ai.oci.genai 是用於組態與 OCI GenAI 連線的屬性字首。

屬性 描述 預設值

spring.ai.oci.genai.authenticationType

用於驗證 OCI 的驗證類型。可以是 fileinstance-principalworkload-identitysimple

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 端點。

-

組態屬性

字首 spring.ai.oci.genai.chat.cohere 是用於組態 OCI GenAI Cohere Chat 的 ChatModel 實作的屬性字首。

屬性 描述 預設值

spring.ai.oci.genai.chat.cohere.enabled

啟用 OCI GenAI Cohere 聊天模型。

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

覆寫聊天模型的提示前言

-

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

聊天內容中使用的文件清單。

-

所有字首為 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()
            .withModel("my-model-ocid")
            .withCompartment("my-compartment-ocid")
            .withTemperature(0.5)
        .build()
    ));

範例控制器

建立 新的 Spring Boot 專案,並將 spring-ai-oci-genai-spring-boot-starter 新增至您的 pom (或 gradle) 相依性。

src/main/resources 目錄下新增 application.properties 檔案,以啟用和組態 OCI GenAI Cohere 聊天模型

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 類別範例。

@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()
        .withModel(MODEL_ID)
        .withCompartment(COMPARTMENT_ID)
        .withServingMode("on-demand")
        .build());

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

OCICohereChatOptions 提供聊天請求的組態資訊。OCICohereChatOptions.Builder 是流暢選項建構器。