このバージョンはまだ開発中であり、まだ安定しているとは考えられていません。最新のスナップショットバージョンについては、Spring AI 1.0.3 を使用してください。 |
MiniMax チャット
Spring AI は、MiniMax のさまざまな AI 言語モデルをサポートしています。MiniMax 言語モデルと対話し、MiniMax モデルに基づいて多言語会話アシスタントを作成できます。
前提条件
MiniMax 言語モデルにアクセスするには、MiniMax を使用して API を作成する必要があります。
MiniMax 登録ページ (英語) でアカウントを作成し、API キーページ (英語) でトークンを生成します。
Spring AI プロジェクトは、API キーページから取得した API Key
の値に設定する必要がある spring.ai.minimax.api-key
という名前の構成プロパティを定義します。
この構成プロパティは、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 スナップショットリポジトリに公開されています。これらのリポジトリをビルドシステムに追加するには、アーティファクトリポジトリセクションを参照してください。
依存関係の管理を支援するために、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 をスローし、 | 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.model.chat=minimax (デフォルトで有効になっています) 無効にするには、spring.ai.model.chat=none (または、ミニマックスと一致しない値) この変更は、複数のモデルの構成を可能にするために行われます。 |
プレフィックス spring.ai.minimax.chat
は、MiniMax のチャットモデル実装を構成できるプロパティプレフィックスです。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.minimax.chat.enabled (削除され、無効になりました) | MiniMax チャットモデルを有効にします。 | true |
spring.ai.model.chat | MiniMax チャットモデルを有効にします。 | ミニマックス |
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()
.model(MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue())
.temperature(0.5)
.build()
));
モデル固有の MiniMaxChatOptions [GitHub] (英語) に加えて、ChatOptions#builder() [GitHub] (英語) で作成されたポータブル ChatOptions [GitHub] (英語) インスタンスを使用できます。 |
サンプルコントローラー
新しい 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
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", 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 [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(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 [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 = 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 [GitHub] (英語) の JavaDoc を参照してください。
WebSearch チャット
MiniMax モデルは Web 検索機能をサポートしています。Web 検索機能を使用すると、Web で情報を検索し、その結果をチャットレスポンスで返すことができます。
Web 検索の詳細については、MiniMax チャット補完 (英語) を参照してください。
Web 検索の使用方法の簡単な例を次に示します。
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 サンプル
MiniMaxApiIT.java [GitHub] (英語) テストでは、軽量ライブラリの使用方法の一般的な例をいくつか示します。
MiniMaxApiToolFunctionCallIT.java [GitHub] (英語) テストは、低レベル API を使用してツール関数を呼び出す方法を示しています。>