MiniMax チャット
Spring AI は、MiniMax のさまざまな AI 言語モデルをサポートしています。MiniMax 言語モデルと対話し、MiniMax モデルに基づいて多言語会話アシスタントを作成できます。
前提条件
MiniMax 言語モデルにアクセスするには、MiniMax を使用して API を作成する必要があります。
MiniMax 登録ページ (英語) でアカウントを作成し、API キーページ (英語) でトークンを生成します。Spring AI プロジェクトでは、spring.ai.minimax.api-key
という名前の構成プロパティが定義されており、これを API キーページ (英語) から取得した API Key
の値に設定する必要があります。環境変数をエクスポートすることは、その構成プロパティを設定する 1 つの方法です。
export SPRING_AI_MINIMAX_API_KEY=<INSERT KEY HERE>
自動構成
Spring AI は、MiniMax チャットクライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml
ファイルに次の依存関係を追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-minimax-spring-boot-starter</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-minimax-spring-boot-starter'
}
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 をスローし、 | 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 | |
spring.ai.minimax.api-key | API キー | - |
プロパティの構成
プレフィックス spring.ai.minimax.chat
は、MiniMax のチャットモデル実装を構成できるプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.minimax.chat.enabled | MiniMax チャットモデルを有効にします。 | true |
spring.ai.minimax.chat.base-url | オプションで spring.ai.minimax.base-url をオーバーライドして、チャット固有の URL を提供します | |
spring.ai.minimax.chat.api-key | オプションで spring.ai.minimax.api-key をオーバーライドしてチャット固有の API キーを提供します | - |
spring.ai.minimax.chat.options.model | 使用するチャットモデルは MiniMax です |
|
spring.ai.minimax.chat.options.maxTokens | チャット補完で生成するトークンの最大数。入力トークンと生成されたトークンの合計の長さは、モデルのコンテキストの長さによって制限されます。 | - |
spring.ai.minimax.chat.options.temperature | 生成される補完の見かけの創造性を制御するために使用するサンプリング温度。値を高くすると出力がよりランダムになり、値を低くすると結果がより集中的で決定的になります。これら 2 つの設定の相互作用を予測するのは難しいため、同じ完了リクエストに対して温度と 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"] の形式で単一のストップワードのみをサポートしています | - |
ChatModel 実装の共通の spring.ai.minimax.base-url および spring.ai.minimax.api-key をオーバーライドできます。spring.ai.minimax.chat.base-url および spring.ai.minimax.chat.api-key プロパティが設定されている場合は、共通のプロパティよりも優先されます。これは、異なるモデルおよび異なるモデルエンドポイントに異なる MiniMax アカウントを使用する場合に便利です。 |
spring.ai.minimax.chat.options というプレフィックスが付いたすべてのプロパティは、リクエスト固有のランタイムオプションを Prompt 呼び出しに追加することで実行時にオーバーライドできます。 |
ランタイムオプション
MiniMaxChatOptions.java [GitHub] (英語) は、使用するモデル、温度、周波数ペナルティなどのモデル構成を提供します。
起動時に、MiniMaxChatModel(api, options)
コンストラクターまたは spring.ai.minimax.chat.options.*
プロパティを使用してデフォルトのオプションを構成できます。
実行時に、新しいリクエスト固有のオプションを Prompt
呼び出しに追加することで、デフォルトのオプションをオーバーライドできます。たとえば、特定のリクエストのデフォルトのモデルと温度をオーバーライドするには、次のようにします。
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
MiniMaxChatOptions.builder()
.withModel(MiniMaxApi.ChatModel.ABAB_5_5_Chat.getValue())
.withTemperature(0.5f)
.build()
));
モデル固有の MiniMaxChatOptions [GitHub] (英語) に加えて、ChatOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ChatOptions [GitHub] (英語) インスタンスを使用できます。 |
サンプルコントローラー
新しい Spring Boot プロジェクトを作成し、spring-ai-minimax-spring-boot-starter
を 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
api-key を MiniMax 資格情報に置き換えます。 |
これにより、クラスに挿入できる 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", 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);
}
}
手動構成
MiniMaxChatModel [GitHub] (英語) は ChatModel
と StreamingChatModel
を実装し、低レベル 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(miniMaxApi, MiniMaxChatOptions.builder()
.withModel(MiniMaxApi.ChatModel.ABAB_5_5_Chat.getValue())
.withTemperature(0.4f)
.withMaxTokens(200)
.build());
ChatResponse response = chatModel.call(
new Prompt("Generate the names of 5 famous pirates."));
// Or with streaming responses
Flux<ChatResponse> streamResponse = chatModel.stream(
new Prompt("Generate the names of 5 famous pirates."));
MiniMaxChatOptions
は、チャットリクエストの構成情報を提供します。MiniMaxChatOptions.Builder
は流れるようなオプションビルダーです。
低レベル MiniMaxApi クライアント
MiniMaxApi [GitHub] (英語) が提供するのは、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 = miniMaxApi.chatCompletionEntity(
new ChatCompletionRequest(List.of(chatCompletionMessage), MiniMaxApi.ChatModel.ABAB_5_5_Chat.getValue(), 0.7f, false));
// Streaming request
Flux<ChatCompletionChunk> streamResponse = miniMaxApi.chatCompletionStream(
new ChatCompletionRequest(List.of(chatCompletionMessage), MiniMaxApi.ChatModel.ABAB_5_5_Chat.getValue(), 0.7f, true));
詳細については、MiniMaxApi.java [GitHub] (英語) の JavaDoc を参照してください。
MiniMaxApi サンプル
MiniMaxApiIT.java [GitHub] (英語) テストでは、軽量ライブラリの使用方法の一般的な例をいくつか示します。
MiniMaxApiToolFunctionCallIT.java [GitHub] (英語) テストは、低レベル API を使用してツール関数を呼び出す方法を示します。