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

Spring AI 使用 Mistral AI 对话模型

技术文档 16℃ 0

Spring AI 全面支持 Mistral AI 旗下各类大语言模型,可用于构建多语种对话助手。Mistral AI 同时提供 OpenAI API 兼容接口,你也可以通过 Spring AI OpenAI 集成模块调用 Mistral 服务。

前提条件

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

  2. 将密钥配置到 Spring AI 配置项:spring.ai.mistralai.api-key

基础配置(application.properties)

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

安全配置(环境变量)

# application.yml
spring:
  ai:
    mistralai:
      api-key: ${MISTRALAI_API_KEY}

# 环境变量
export MISTRALAI_API_KEY=<your-mistralai-api-key>

自动配置依赖

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-mistral-ai</artifactId>
</dependency>

核心配置属性

1. 重试配置

属性说明默认值
spring.ai.retry.max-attempts最大重试次数10
spring.ai.retry.backoff.initial-interval初始退避时间2s

2. 连接配置

属性说明默认值
spring.ai.mistralai.base-url服务地址api.mistral.ai
spring.ai.mistralai.api-keyAPI 密钥-

3. 模型配置

属性说明可选值
spring.ai.model.chat启用模型mistral(默认)
spring.ai.mistralai.chat.options.model模型名称mistral-large-latest、mistral-small-latest 等
spring.ai.mistralai.chat.options.temperature随机性0~1,默认 0.8
spring.ai.mistralai.chat.options.maxTokens最大生成长度-

运行时动态参数

可在请求时覆盖默认配置:

ChatResponse response = chatModel.call(
    new Prompt("生成5位著名海盗的名字",
        MistralAiChatOptions.builder()
            .model(MistralAiApi.ChatModel.LARGE.getValue())
            .temperature(0.5)
            .build()
    ));

函数调用(Tool Calling)

支持注册自定义 Java 函数,模型可智能选择并调用,实现大模型与外部系统联动。

结构化输出(JSON Schema)

Mistral 原生支持 JSON 模式与严格 Schema 校验,确保输出格式符合预期:

// 结构化输出
record MovieRecommendation(String title, String director, int year) {}

var options = MistralAiChatOptions.builder()
    .responseFormat(ResponseFormat.jsonSchema(MovieRecommendation.class))
    .build();

多模态(视觉理解)

支持 pixtral-large-latest 视觉模型,可传入图片进行理解分析:

var image = new ClassPathResource("/test.png");
var message = new UserMessage("描述这张图片",
        new Media(MimeTypeUtils.IMAGE_PNG, image));

ChatResponse response = chatModel.call(new Prompt(message,
    ChatOptions.builder().model("pixtral-large-latest").build()));

OpenAI API 兼容模式

可直接使用 OpenAI 客户端接入 Mistral:

spring.ai.openai.chat.base-url=https://api.mistral.ai
spring.ai.openai.chat.options.model=mistral-small-latest
spring.ai.openai.chat.api-key=${MISTRALAI_API_KEY}

OCR 文字识别

Spring AI 集成 Mistral OCR API,可从文档/图片中提取文本:

MistralOcrApi ocrApi = new MistralOcrApi(apiKey);
var request = new MistralOcrApi.OCRRequest(
    "mistral-ocr-latest", "doc-1",
    new MistralOcrApi.OCRRequest.DocumentURLChunk("https://example.com/doc.pdf"));
var response = ocrApi.ocr(request);

示例控制器

@RestController
public class ChatController {
    private final MistralAiChatModel chatModel;

    @Autowired
    public ChatController(MistralAiChatModel 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 mistralAiApi = new MistralAiApi(System.getenv("MISTRALAI_API_KEY"));

// 构建模型
var chatModel = new MistralAiChatModel(mistralAiApi,
    MistralAiChatOptions.builder()
        .model("mistral-large-latest")
        .temperature(0.4)
        .build());

// 调用
ChatResponse response = chatModel.call(new Prompt("你好"));

相关推荐