Skip to main content
Spring AI 支持 Mistral AI 提供的各种 AI 语言模型。你可以与 Mistral AI 语言模型进行交互,并基于 Mistral 模型创建多语言会话助手。
Mistral AI 也提供与 OpenAI API 兼容的端点。 请查看 OpenAI API 兼容性部分,了解如何使用 Spring AI OpenAI 集成与 Mistral 端点通信。

前提条件

你需要使用 Mistral AI 创建一个 API 才能访问 Mistral AI 语言模型。 Mistral AI 注册页面创建一个帐户,并在API 密钥页面生成令牌。 Spring AI 项目定义了一个名为 spring.ai.mistralai.api-key 的配置属性,你应该将其设置为从 console.mistral.ai 获取的 API 密钥 的值。 你可以在 application.properties 文件中设置此配置属性:
为了在处理 API 密钥等敏感信息时增强安全性,你可以使用 Spring 表达式语言 (SpEL) 来引用自定义环境变量:
你也可以在应用程序代码中以编程方式设置此配置:

添加仓库和 BOM

Spring AI 的构件发布在 Maven Central 和 Spring Snapshot 仓库中。 请参阅构件仓库部分,将这些仓库添加到你的构建系统中。 为了帮助进行依赖管理,Spring AI 提供了一个 BOM (bill of materials),以确保在整个项目中使用一致版本的 Spring AI。请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建系统中。

自动配置

Spring AI 自动配置、启动器模块的构件名称发生了重大变化。 有关更多信息,请参阅升级说明
Spring AI 为 Mistral AI 聊天客户端提供 Spring Boot 自动配置。 要启用它,请将以下依赖项添加到项目的 Maven pom.xml 文件中:
请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建文件中。

聊天属性

重试属性

前缀 spring.ai.retry 用作属性前缀,允许你配置 Mistral AI 聊天模型的重试机制。

连接属性

前缀 spring.ai.mistralai 用作属性前缀,允许你连接到 OpenAI。

配置属性

聊天自动配置的启用和禁用现在通过前缀为 spring.ai.model.chat 的顶级属性进行配置。要启用,spring.ai.model.chat=mistral (默认启用)要禁用,spring.ai.model.chat=none (或任何与 mistral 不匹配的值)此更改是为了允许配置多个模型。
前缀 spring.ai.mistralai.chat 是属性前缀,允许你配置 Mistral AI 的聊天模型实现。
你可以为 ChatModelEmbeddingModel 实现覆盖通用的 spring.ai.mistralai.base-urlspring.ai.mistralai.api-key。 如果设置了 spring.ai.mistralai.chat.base-urlspring.ai.mistralai.chat.api-key 属性,则它们优先于通用属性。 如果你想为不同的模型和不同的模型端点使用不同的 Mistral AI 帐户,这将非常有用。
所有以 spring.ai.mistralai.chat.options 为前缀的属性都可以在运行时通过向 Prompt 调用添加特定于请求的聊天选项来覆盖。

运行时选项

MistralAiChatOptions.java 提供模型配置,例如要使用的模型、温度、频率惩罚等。 在启动时,可以使用 MistralAiChatModel(api, options) 构造函数或 spring.ai.mistralai.chat.options.* 属性配置默认选项。 在运行时,你可以通过向 Prompt 调用添加新的、特定于请求的选项来覆盖默认选项。 例如,要为特定请求覆盖默认模型和温度:
除了特定于模型的 MistralAiChatOptions之外,你还可以使用通过 ChatOptionsBuilder#builder() 创建的可移植 ChatOptions 实例。

函数调用

你可以使用 MistralAiChatModel 注册自定义 Java 函数,并让 Mistral AI 模型智能地选择输出一个 JSON 对象,其中包含调用一个或多个已注册函数的参数。 这是将 LLM 功能与外部工具和 API 连接起来的强大技术。 阅读有关工具调用的更多信息。

多模态

多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、图像、音频和其他数据格式。 Mistral AI 支持文本和视觉模态。

视觉

Mistral AI 模型提供视觉多模态支持,包括 pixtral-large-latest。 有关更多信息,请参阅视觉指南。 Mistral AI 用户消息 API 可以将 base64 编码的图像或图像 URL 列表与消息合并。 Spring AI 的 Message 接口通过引入 Media 类型来促进多模态 AI 模型。 此类型包含有关消息中媒体附件的数据和详细信息,利用 Spring 的 org.springframework.util.MimeTypeorg.springframework.core.io.Resource 来获取原始媒体数据。 以下是从 MistralAiChatModelIT.java 中摘录的代码示例,说明了用户文本与图像的融合:
或等效的图像 URL:
你也可以传递多个图像。
该示例显示了一个模型,它将 multimodal.test.png 图像作为输入:
多模态测试图像
以及文本消息”解释一下你在这张图片上看到了什么?“,并生成如下响应:

OpenAI API 兼容性

Mistral 与 OpenAI API 兼容,你可以使用 Spring AI OpenAI 客户端与 Mistral 通信。 为此,你需要将 OpenAI 基本 URL 配置为 Mistral AI 平台:spring.ai.openai.chat.base-url=https://api.mistral.ai,选择一个 Mistral 模型:spring.ai.openai.chat.options.model=mistral-small-latest 并设置 Mistral AI API 密钥:spring.ai.openai.chat.api-key=<你的 MISTRAL API 密钥> 请查看 MistralWithOpenAiChatModelIT.java 测试,获取通过 Spring AI OpenAI 使用 Mistral 的示例。

示例控制器(自动配置)

创建一个新的 Spring Boot 项目,并将 spring-ai-starter-model-mistral-ai 添加到你的 pom (或 gradle) 依赖项中。 src/main/resources 目录下添加一个 application.properties 文件,以启用和配置 Mistral AI 聊天模型:
api-key 替换为你的 Mistral AI 凭据。
这将创建一个 MistralAiChatModel 实现,你可以将其注入到你的类中。 以下是一个简单的 @RestController 类的示例,该类使用聊天模型进行文本生成:

手动配置

MistralAiChatModel 实现了 ChatModelStreamingChatModel,并使用低级 API连接到 Mistral AI 服务。 spring-ai-mistral-ai 依赖项添加到项目的 Maven pom.xml 文件中:
或添加到你的 Gradle build.gradle 构建文件中:
请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建文件中。
接下来,创建一个 MistralAiChatModel 并将其用于文本生成:
MistralAiChatOptions 为聊天请求提供配置信息。 MistralAiChatOptions.Builder 是一个流畅的选项构建器。

低级 MistralAiApi 客户端

MistralAiApi 提供了轻量级的 Java 客户端,用于 Mistral AI API 以下是一个简单的代码片段,展示了如何以编程方式使用 API:
有关更多信息,请参阅 MistralAiApi.java 的 JavaDoc。

MistralAiApi 示例

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!