MiniMax 聊天

Spring AI 支援 MiniMax 的各種 AI 語言模型。您可以與 MiniMax 語言模型互動,並基於 MiniMax 模型建立多語言對話助手。

先決條件

您需要使用 MiniMax 建立一個 API 以訪問 MiniMax 語言模型。

MiniMax 註冊頁面建立賬戶,並在 API Key 頁面生成令牌。Spring AI 專案定義了一個名為 spring.ai.minimax.api-key 的配置屬性,您應將其設定為從 API Key 頁面獲得的 API Key 的值。匯出環境變數是設定此配置屬性的一種方法

export SPRING_AI_MINIMAX_API_KEY=<INSERT KEY HERE>

新增倉庫和 BOM

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

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

自動配置

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

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

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

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

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

Embedding 屬性

重試屬性

字首 spring.ai.retry 用作屬性字首,允許您配置 MiniMax Embedding 模型的重試機制。

屬性 描述 預設值

spring.ai.retry.max-attempts

最大重試次數。

10

spring.ai.retry.backoff.initial-interval

指數退避策略的初始等待時長。

2 秒

spring.ai.retry.backoff.multiplier

退避間隔乘數。

5

spring.ai.retry.backoff.max-interval

最大退避時長。

3 分鐘

spring.ai.retry.on-client-errors

如果為 false,則丟擲 NonTransientAiException,並且不對 4xx 客戶端錯誤碼進行重試。

false

spring.ai.retry.exclude-on-http-codes

不應觸發重試的 HTTP 狀態碼列表(例如,丟擲 NonTransientAiException)。

spring.ai.retry.on-http-codes

應觸發重試的 HTTP 狀態碼列表(例如,丟擲 TransientAiException)。

連線屬性

字首 spring.ai.minimax 用作屬性字首,允許您連線到 MiniMax。

屬性 描述 預設值

spring.ai.minimax.base-url

連線 URL

api.minimax.chat

spring.ai.minimax.api-key

API Key

-

配置屬性

現在透過字首為 spring.ai.model.embedding 的頂級屬性來配置 Embedding 自動配置的啟用和停用。

要啟用,請設定 spring.ai.model.embedding=minimax (預設啟用)

要停用,請設定 spring.ai.model.embedding=none (或任何不匹配 minimax 的值)

進行此更改是為了允許配置多個模型。

字首 spring.ai.minimax.embedding 是屬性字首,用於配置 MiniMax 的 EmbeddingModel 實現。

屬性 描述 預設值

spring.ai.minimax.embedding.enabled (已移除,不再有效)

啟用 MiniMax Embedding 模型。

true

spring.ai.model.embedding

啟用 MiniMax Embedding 模型。

minimax

spring.ai.minimax.embedding.base-url

可選,覆蓋 spring.ai.minimax.base-url 以提供特定於 Embedding 的 URL

-

spring.ai.minimax.embedding.api-key

可選,覆蓋 spring.ai.minimax.api-key 以提供特定於 Embedding 的 API Key

-

spring.ai.minimax.embedding.options.model

要使用的模型

embo-01

您可以為 ChatModelEmbeddingModel 實現覆蓋通用的 spring.ai.minimax.base-urlspring.ai.minimax.api-key。如果設定了 spring.ai.minimax.embedding.base-urlspring.ai.minimax.embedding.api-key 屬性,它們將優先於通用屬性。同樣,如果設定了 spring.ai.minimax.chat.base-urlspring.ai.minimax.chat.api-key 屬性,它們也將優先於通用屬性。如果您希望為不同的模型和不同的模型端點使用不同的 MiniMax 賬戶,這非常有用。
所有以 spring.ai.minimax.embedding.options 為字首的屬性都可以在執行時透過向 EmbeddingRequest 呼叫新增請求特定的 執行時選項 來覆蓋。

執行時選項

MiniMaxEmbeddingOptions.java 提供了 MiniMax 配置,例如要使用的模型等。

預設選項也可以使用 spring.ai.minimax.embedding.options 屬性進行配置。

在啟動時,使用 MiniMaxEmbeddingModel 建構函式設定用於所有 Embedding 請求的預設選項。在執行時,您可以使用 MiniMaxEmbeddingOptions 例項作為 EmbeddingRequest 的一部分來覆蓋預設選項。

例如,為特定請求覆蓋預設模型名稱

EmbeddingResponse embeddingResponse = embeddingModel.call(
    new EmbeddingRequest(List.of("Hello World", "World is big and salvation is near"),
        MiniMaxEmbeddingOptions.builder()
            .model("Different-Embedding-Model-Deployment-Name")
        .build()));

示例 Controller

這將建立一個 EmbeddingModel 實現,您可以將其注入到您的類中。以下是一個使用 EmbeddingC 實現的簡單 @Controller 類示例。

spring.ai.minimax.api-key=YOUR_API_KEY
spring.ai.minimax.embedding.options.model=embo-01
@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;

    @Autowired
    public EmbeddingController(EmbeddingModel embeddingModel) {
        this.embeddingModel = embeddingModel;
    }

    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(message));
        return Map.of("embedding", embeddingResponse);
    }
}

手動配置

如果您不使用 Spring Boot,可以手動配置 MiniMax Embedding 模型。為此,請將 spring-ai-minimax 依賴項新增到您的專案的 Maven pom.xml 檔案中

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

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

dependencies {
    implementation 'org.springframework.ai:spring-ai-minimax'
}
請參閱 依賴管理 部分,將 Spring AI BOM 新增到您的構建檔案。
spring-ai-minimax 依賴項還提供了對 MiniMaxChatModel 的訪問。有關 MiniMaxChatModel 的更多資訊,請參閱 MiniMax 聊天客戶端 部分。

接下來,建立一個 MiniMaxEmbeddingModel 例項,並使用它來計算兩個輸入文字之間的相似度

var miniMaxApi = new MiniMaxApi(System.getenv("MINIMAX_API_KEY"));

var embeddingModel = new MiniMaxEmbeddingModel(minimaxApi, MetadataMode.EMBED,
MiniMaxEmbeddingOptions.builder().model("embo-01").build());

EmbeddingResponse embeddingResponse = this.embeddingModel
	.embedForResponse(List.of("Hello World", "World is big and salvation is near"));

MiniMaxEmbeddingOptions 提供了 Embedding 請求的配置資訊。選項類提供了 builder() 方法,方便建立選項。