收藏本站,收获最前沿的人工智能与编程资讯!!

Spring AI 使用 MiniMax 对话模型

技术文档 16℃ 0

Spring AI 支持 MiniMax 全系列大语言模型,可用于构建多语种对话交互系统,同时内置联网搜索(WebSearch)函数调用能力。

前提条件

  1. 在 MiniMax 官网注册账号并创建 API Key

  2. 配置密钥: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-keyAPI 密钥-

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));

相关推荐