MiniMax 聊天

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

先決條件

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

MiniMax 註冊頁面 建立帳戶,並在 API 金鑰頁面 生成令牌。

Spring AI 專案定義了一個名為 spring.ai.minimax.api-key 的配置屬性,您應該將其設定為從 API 金鑰頁面獲取的 API 金鑰 的值。

您可以在 application.properties 檔案中設定此配置屬性

spring.ai.minimax.api-key=<your-minimax-api-key>

為了在處理 API 金鑰等敏感資訊時增強安全性,您可以使用 Spring 表示式語言 (SpEL) 引用環境變數。

# In application.yml
spring:
  ai:
    minimax:
      api-key: ${MINIMAX_API_KEY}
# In your environment or .env file
export MINIMAX_API_KEY=<your-minimax-api-key>

您還可以在應用程式程式碼中以程式設計方式設定此配置

// Retrieve API key from a secure source or environment variable
String apiKey = System.getenv("MINIMAX_API_KEY");

新增儲存庫和 BOM

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

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

自動配置

Spring AI 自動配置、啟動模組的工件名稱發生了重大變化。請參閱 升級說明 以獲取更多資訊。

Spring AI 為 MiniMax 聊天客戶端提供了 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 新增到您的構建檔案中。

聊天屬性

重試屬性

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

財產 描述 預設值

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 客戶端錯誤程式碼

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 金鑰

-

配置屬性

聊天自動配置的啟用和停用現在透過以spring.ai.model.chat為字首的頂級屬性進行配置。

要啟用,spring.ai.model.chat=minimax (預設啟用)

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

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

字首 spring.ai.minimax.chat 是屬性字首,允許您配置 MiniMax 的聊天模型實現。

財產 描述 預設值

spring.ai.minimax.chat.enabled (已刪除且不再有效)

啟用 MiniMax 聊天模型。

true

spring.ai.model.chat

啟用 MiniMax 聊天模型。

minimax

spring.ai.minimax.chat.base-url

可選地覆蓋 spring.ai.minimax.base-url 以提供特定於聊天的 URL

api.minimax.chat

spring.ai.minimax.chat.api-key

可選地覆蓋 spring.ai.minimax.api-key 以提供特定於聊天的 API 金鑰

-

spring.ai.minimax.chat.options.model

這是要使用的 MiniMax 聊天模型

abab6.5g-chat (abab5.5-chatabab5.5s-chatabab6.5-chatabab6.5g-chatabab6.5t-chatabab6.5s-chat 指向最新的模型版本)

spring.ai.minimax.chat.options.maxTokens

在聊天補全中生成的最大令牌數。輸入令牌和生成令牌的總長度受模型上下文長度的限制。

-

spring.ai.minimax.chat.options.temperature

用於控制生成完成的明顯創造性的取樣溫度。較高的值將使輸出更隨機,而較低的值將使結果更集中和確定。不建議在同一完成請求中修改溫度和 top_p,因為這兩個設定的相互作用難以預測。

0.7

spring.ai.minimax.chat.options.topP

除了使用溫度取樣之外的另一種方法,稱為核取樣,模型考慮具有 top_p 機率質量的令牌結果。因此 0.1 意味著只考慮佔前 10% 機率質量的令牌。我們通常建議更改此項或溫度,但不要同時更改兩者。

1.0

spring.ai.minimax.chat.options.n

為每個輸入訊息生成多少個聊天完成選項。請注意,您將根據所有選項中生成的令牌數量進行收費。預設值為 1 且不能大於 5。具體來說,當溫度非常小且接近 0 時,我們只能返回 1 個結果。如果此時已設定 n 且 >1,服務將返回非法輸入引數 (invalid_request_error)

1

spring.ai.minimax.chat.options.presencePenalty

介於 -2.0 和 2.0 之間的數字。正值會根據新令牌是否出現在文字中來懲罰新令牌,從而增加模型討論新主題的可能性。

0.0f

spring.ai.minimax.chat.options.frequencyPenalty

介於 -2.0 和 2.0 之間的數字。正值會根據文字中現有頻率懲罰新令牌,從而降低模型重複相同行的可能性。

0.0f

spring.ai.minimax.chat.options.stop

模型將停止生成由 stop 指定的字元,目前僅支援 ["stop_word1"] 格式的單個停用詞

-

spring.ai.minimax.chat.options.tool-names

工具列表,透過其名稱標識,用於在單個提示請求中啟用函式呼叫。具有這些名稱的工具必須存在於 ToolCallback 登錄檔中。

-

spring.ai.minimax.chat.options.tool-callbacks

要註冊到 ChatModel 的工具回撥。

-

spring.ai.minimax.chat.options.internal-tool-execution-enabled

如果為 false,Spring AI 將不會在內部處理工具呼叫,而是將其代理到客戶端。然後,客戶端負責處理工具呼叫,將其分派到適當的函式,並返回結果。如果為 true(預設),Spring AI 將在內部處理函式呼叫。僅適用於支援函式呼叫的聊天模型

true

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

執行時選項

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

在啟動時,預設選項可以透過 MiniMaxChatModel(api, options) 建構函式或 spring.ai.minimax.chat.options.* 屬性進行配置。

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

ChatResponse response = chatModel.call(
    new Prompt(
        "Generate the names of 5 famous pirates.",
        MiniMaxChatOptions.builder()
            .model(MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue())
            .temperature(0.5)
        .build()
    ));
除了模型特定的 MiniMaxChatOptions,您還可以使用可移植的 ChatOptions 例項,透過 ChatOptions#builder() 建立。

示例控制器

建立 一個新的 Spring Boot 專案,並將 spring-ai-starter-model-minimax 新增到您的 pom(或 gradle)依賴項中。

src/main/resources 目錄下新增一個 application.properties 檔案,以啟用和配置 MiniMax 聊天模型

spring.ai.minimax.api-key=YOUR_API_KEY
spring.ai.minimax.chat.options.model=abab6.5g-chat
spring.ai.minimax.chat.options.temperature=0.7
用您的 MiniMax 憑據替換 api-key

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

@RestController
public class ChatController {

    private final MiniMaxChatModel chatModel;

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

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", this.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 this.chatModel.stream(prompt);
    }
}

手動配置

MiniMaxChatModel 實現了 ChatModelStreamingChatModel,並使用 低階 MiniMaxApi 客戶端 連線到 MiniMax 服務。

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 新增到您的構建檔案中。

接下來,建立 MiniMaxChatModel 並將其用於文字生成

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

var chatModel = new MiniMaxChatModel(this.miniMaxApi, MiniMaxChatOptions.builder()
                .model(MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue())
                .temperature(0.4)
                .maxTokens(200)
                .build());

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

// Or with streaming responses
Flux<ChatResponse> streamResponse = this.chatModel.stream(
    new Prompt("Generate the names of 5 famous pirates."));

MiniMaxChatOptions 提供了聊天請求的配置資訊。MiniMaxChatOptions.Builder 是一個流暢的選項構建器。

低階 MiniMaxApi 客戶端

MiniMaxApi 提供了用於 MiniMax API 的輕量級 Java 客戶端。

這是一個如何以程式設計方式使用 API 的簡單片段

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

ChatCompletionMessage chatCompletionMessage =
    new ChatCompletionMessage("Hello world", Role.USER);

// Sync request
ResponseEntity<ChatCompletion> response = this.miniMaxApi.chatCompletionEntity(
    new ChatCompletionRequest(List.of(this.chatCompletionMessage), MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue(), 0.7, false));

// Streaming request
Flux<ChatCompletionChunk> streamResponse = this.miniMaxApi.chatCompletionStream(
    new ChatCompletionRequest(List.of(this.chatCompletionMessage), MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue(), 0.7, true));

有關更多資訊,請參閱 MiniMaxApi.java 的 JavaDoc。

MiniMax 模型支援網路搜尋功能。網路搜尋功能允許您搜尋網路資訊,並在聊天響應中返回結果。

有關網路搜尋的更多資訊,請參閱 MiniMax ChatCompletion

以下是一個如何使用網路搜尋的簡單程式碼片段

UserMessage userMessage = new UserMessage(
        "How many gold medals has the United States won in total at the 2024 Olympics?");

List<Message> messages = new ArrayList<>(List.of(this.userMessage));

List<MiniMaxApi.FunctionTool> functionTool = List.of(MiniMaxApi.FunctionTool.webSearchFunctionTool());

MiniMaxChatOptions options = MiniMaxChatOptions.builder()
    .model(MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.value)
    .tools(this.functionTool)
    .build();


// Sync request
ChatResponse response = chatModel.call(new Prompt(this.messages, this.options));

// Streaming request
Flux<ChatResponse> streamResponse = chatModel.stream(new Prompt(this.messages, this.options));

MiniMaxApi 示例

© . This site is unofficial and not affiliated with VMware.