Spring AI 支持 MiniMax 全系列大语言模型,可用于构建多语种对话交互系统,同时内置联网搜索(WebSearch)与函数调用能力。
前提条件
在 MiniMax 官网注册账号并创建 API Key
配置密钥:
spring.ai.minimax.api-key
基础配置(application.properties)
spring.ai.minimax.api-key=<your-minimax-api-key>
环境变量安全配置(推荐)
# application.yml
spring:
ai:
minimax:
api-key: ${MINIMAX_API_KEY}
# 系统环境变量
export MINIMAX_API_KEY=<your-minimax-api-key>自动配置依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-minimax</artifactId> </dependency>
核心配置属性
1. 重试机制
| 属性 | 说明 | 默认值 |
|---|---|---|
| spring.ai.retry.max-attempts | 最大重试次数 | 10 |
| spring.ai.retry.backoff.initial-interval | 初始退避间隔 | 2s |
2. 连接配置
| 属性 | 说明 | 默认值 |
|---|---|---|
| spring.ai.minimax.base-url | 服务地址 | api.minimax.chat |
| spring.ai.minimax.api-key | API 密钥 | - |
3. 模型参数
| 属性 | 说明 | 默认值 |
|---|---|---|
| spring.ai.model.chat | 启用模型 | minimax |
| spring.ai.minimax.chat.options.model | 模型名称 | abab6.5g-chat |
| spring.ai.minimax.chat.options.temperature | 随机性 | 0.7 |
| spring.ai.minimax.chat.options.maxTokens | 最大生成长度 | - |
运行时动态参数
可在请求时单独指定模型、温度等参数:
ChatResponse response = chatModel.call(
new Prompt("生成5位著名海盗的名字",
MiniMaxChatOptions.builder()
.model(MiniMaxApi.ChatModel.ABAB_6_5_S_Chat.getValue())
.temperature(0.5)
.build()
));特色功能:WebSearch 联网搜索
MiniMax 内置实时联网搜索,让模型获取最新信息:
// 构造问题
var userMessage = new UserMessage("2024年美国获得多少枚奥运金牌");
// 开启联网搜索工具
var tools = List.of(MiniMaxApi.FunctionTool.webSearchFunctionTool());
// 构建选项
var options = MiniMaxChatOptions.builder()
.model("abab6.5s-chat")
.tools(tools)
.build();
// 调用
ChatResponse response = chatModel.call(new Prompt(userMessage, options));示例控制器(自动配置)
@RestController
public class ChatController {
private final MiniMaxChatModel chatModel;
@Autowired
public ChatController(MiniMaxChatModel chatModel) {
this.chatModel = chatModel;
}
// 同步调用
@GetMapping("/ai/generate")
public Mapgenerate(@RequestParam(defaultValue = "讲个笑话") String message) {
return Map.of("generation", chatModel.call(message));
}
// 流式调用
@GetMapping("/ai/generateStream")
public FluxgenerateStream(@RequestParam(defaultValue = "讲个笑话") String message) {
return chatModel.stream(new Prompt(new UserMessage(message)));
}
}手动配置(不使用自动装配)
// 初始化底层客户端
var miniMaxApi = new MiniMaxApi(System.getenv("MINIMAX_API_KEY"));
// 构建对话模型
var chatModel = new MiniMaxChatModel(miniMaxApi,
MiniMaxChatOptions.builder()
.model("abab6.5g-chat")
.temperature(0.4)
.maxTokens(200)
.build());
// 同步请求
ChatResponse response = chatModel.call(new Prompt("你好"));
// 流式请求
Fluxstream = chatModel.stream(new Prompt("你好"));底层 API 客户端
直接使用原生 MiniMaxApi 调用:
MiniMaxApi api = new MiniMaxApi(apiKey);
var message = new ChatCompletionMessage("Hello world", Role.USER);
// 同步
var response = api.chatCompletionEntity(
new ChatCompletionRequest(List.of(message), "abab6.5g-chat", 0.7, false));
// 流式
Fluxstream = api.chatCompletionStream(
new ChatCompletionRequest(List.of(message), "abab6.5g-chat", 0.7, true));