Moderation

Introduction

Spring AI 支持 Mistral AI 引入的新版审核服务,该服务由 Mistral Moderation 模型提供支持。它能够检测有害文本内容在多个政策维度上的问题。更多关于 Mistral AI 审核模型的信息,请点击此链接: link

Spring AI supports the new moderation service introduced by Mistral AI and powered by the Mistral Moderation model. It enables the detection of harmful text content along several policy dimensions. Follow this link for more information on the Mistral AI moderation model.

Prerequisites

  1. 创建一个 Mistral AI 账户并获取 API 密钥。您可以在 Mistral AI registration page 注册,并在 API Keys page 生成 API 密钥。

  2. Create an Mistral AI account and obtain an API key. You can sign up at Mistral AI registration page and generate an API key on the API Keys page.

  3. spring-ai-mistral-ai 依赖项添加到您项目的构建文件中。更多信息请参阅 Dependency Management 部分。

  4. Add the spring-ai-mistral-ai dependency to your project’s build file. For more information, refer to the Dependency Management section.

Auto-configuration

Spring AI 自动配置、启动器模块的工件名称发生了重大变化。请参阅 upgrade notes 以获取更多信息。

There has been a significant change in the Spring AI auto-configuration, starter modules' artifact names. Please refer to the upgrade notes for more information.

Spring AI 为 Mistral AI 审核模型提供了 Spring Boot 自动配置。要启用它,请将以下依赖项添加到您项目的 Maven pom.xml 文件中:

Spring AI provides Spring Boot auto-configuration for the Mistral AI Moderation Model. To enable it add the following dependency to your project’s Maven pom.xml file:

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

或添加到您的 Gradle build.gradle 构建文件中:

or to your Gradle build.gradle build file:

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-mistral-ai'
}
  1. 参见 Dependency Management 部分,将 Spring AI BOM 添加到你的构建文件中。

Refer to the Dependency Management section to add the Spring AI BOM to your build file.

Moderation Properties

Connection Properties

前缀 spring.ai.mistralai 用作属性前缀,用于连接到 Mistral AI。

The prefix spring.ai.mistralai is used as the property prefix that lets you connect to Mistral AI.

Property

Description

Default

spring.ai.mistralai.base-url

The URL to connect to

[role="bare"]https://api.mistral.ai

spring.ai.mistralai.api-key

The API Key

-

Configuration Properties

审核自动配置的启用和禁用现在通过前缀为 spring.ai.model.moderation 的顶级属性进行配置。

Enabling and disabling of the moderation auto-configurations are now configured via top level properties with the prefix spring.ai.model.moderation.

要启用,spring.ai.model.moderation=mistral(默认启用)

To enable, spring.ai.model.moderation=mistral (It is enabled by default)

要禁用,spring.ai.model.moderation=none(或任何不匹配 mistral 的值)

To disable, spring.ai.model.moderation=none (or any value which doesn’t match mistral)

此更改旨在允许配置多个模型。

This change is done to allow configuration of multiple models.

前缀 spring.ai.mistralai.moderation 用作配置 Mistral AI 审核模型的属性前缀。

The prefix spring.ai.mistralai.moderation is used as the property prefix for configuring the Mistral AI moderation model.

Property

Description

Default

spring.ai.model.moderation

Enable Moderation model

mistral

spring.ai.mistralai.moderation.base-url

The URL to connect to

[role="bare"]https://api.mistral.ai

spring.ai.mistralai.moderation.api-key

The API Key

-

spring.ai.mistralai.moderation.options.model

ID of the model to use for moderation.

mistral-moderation-latest

您可以覆盖通用的 spring.ai.mistralai.base-urlspring.ai.mistralai.api-key 属性。如果设置了 spring.ai.mistralai.moderation.base-urlspring.ai.mistralai.moderation.api-key 属性,它们将优先于通用属性。这在您希望为不同的模型和不同的模型端点使用不同的 Mistral AI 账户时非常有用。

You can override the common spring.ai.mistralai.base-url, spring.ai.mistralai.api-key, properties. The spring.ai.mistralai.moderation.base-url, spring.ai.mistralai.moderation.api-key, properties, if set, take precedence over the common properties. This is useful if you want to use different Mistral AI accounts for different models and different model endpoints.

所有以 spring.ai.mistralai.moderation.options 为前缀的属性都可以在运行时被覆盖。

All properties prefixed with spring.ai.mistralai.moderation.options can be overridden at runtime.

Runtime Options

MistralAiModerationOptions 类提供了在发出审核请求时使用的选项。启动时,使用 spring.ai.mistralai.moderation 指定的选项,但您可以在运行时覆盖这些选项。

The MistralAiModerationOptions class provides the options to use when making a moderation request. On start-up, the options specified by spring.ai.mistralai.moderation are used, but you can override these at runtime.

例如:

For example:

MistralAiModerationOptions moderationOptions = MistralAiModerationOptions.builder()
    .model("mistral-moderation-latest")
    .build();

ModerationPrompt moderationPrompt = new ModerationPrompt("Text to be moderated", this.moderationOptions);
ModerationResponse response = mistralAiModerationModel.call(this.moderationPrompt);

// Access the moderation results
Moderation moderation = moderationResponse.getResult().getOutput();

// Print general information
System.out.println("Moderation ID: " + moderation.getId());
System.out.println("Model used: " + moderation.getModel());

// Access the moderation results (there's usually only one, but it's a list)
for (ModerationResult result : moderation.getResults()) {
    System.out.println("\nModeration Result:");
    System.out.println("Flagged: " + result.isFlagged());

    // Access categories
    Categories categories = this.result.getCategories();
    System.out.println("\nCategories:");
    System.out.println("Law: " + categories.isLaw());
    System.out.println("Financial: " + categories.isFinancial());
    System.out.println("PII: " + categories.isPii());
    System.out.println("Sexual: " + categories.isSexual());
    System.out.println("Hate: " + categories.isHate());
    System.out.println("Harassment: " + categories.isHarassment());
    System.out.println("Self-Harm: " + categories.isSelfHarm());
    System.out.println("Sexual/Minors: " + categories.isSexualMinors());
    System.out.println("Hate/Threatening: " + categories.isHateThreatening());
    System.out.println("Violence/Graphic: " + categories.isViolenceGraphic());
    System.out.println("Self-Harm/Intent: " + categories.isSelfHarmIntent());
    System.out.println("Self-Harm/Instructions: " + categories.isSelfHarmInstructions());
    System.out.println("Harassment/Threatening: " + categories.isHarassmentThreatening());
    System.out.println("Violence: " + categories.isViolence());

    // Access category scores
    CategoryScores scores = this.result.getCategoryScores();
    System.out.println("\nCategory Scores:");
    System.out.println("Law: " + scores.getLaw());
    System.out.println("Financial: " + scores.getFinancial());
    System.out.println("PII: " + scores.getPii());
    System.out.println("Sexual: " + scores.getSexual());
    System.out.println("Hate: " + scores.getHate());
    System.out.println("Harassment: " + scores.getHarassment());
    System.out.println("Self-Harm: " + scores.getSelfHarm());
    System.out.println("Sexual/Minors: " + scores.getSexualMinors());
    System.out.println("Hate/Threatening: " + scores.getHateThreatening());
    System.out.println("Violence/Graphic: " + scores.getViolenceGraphic());
    System.out.println("Self-Harm/Intent: " + scores.getSelfHarmIntent());
    System.out.println("Self-Harm/Instructions: " + scores.getSelfHarmInstructions());
    System.out.println("Harassment/Threatening: " + scores.getHarassmentThreatening());
    System.out.println("Violence: " + scores.getViolence());
}

Manual Configuration

spring-ai-mistral-ai 依赖项添加到您的项目的 Maven pom.xml 文件中:

Add the spring-ai-mistral-ai dependency to your project’s Maven pom.xml file:

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

或添加到您的 Gradle build.gradle 构建文件中:

or to your Gradle build.gradle build file:

dependencies {
    implementation 'org.springframework.ai:spring-ai-mistral-ai'
}
  1. 参见 Dependency Management 部分,将 Spring AI BOM 添加到你的构建文件中。

Refer to the Dependency Management section to add the Spring AI BOM to your build file.

接下来,创建一个 MistralAiModerationModel

Next, create an MistralAiModerationModel:

MistralAiModerationApi mistralAiModerationApi = new MistralAiModerationApi(System.getenv("MISTRAL_AI_API_KEY"));

MistralAiModerationModel mistralAiModerationModel = new MistralAiModerationModel(this.mistralAiModerationApi);

MistralAiModerationOptions moderationOptions = MistralAiModerationOptions.builder()
    .model("mistral-moderation-latest")
    .build();

ModerationPrompt moderationPrompt = new ModerationPrompt("Text to be moderated", this.moderationOptions);
ModerationResponse response = this.mistralAiModerationModel.call(this.moderationPrompt);

Example Code

MistralAiModerationModelIT 测试提供了一些如何使用该库的通用示例。您可以参考此测试以获取更详细的用法示例。

The MistralAiModerationModelIT test provides some general examples of how to use the library. You can refer to this test for more detailed usage examples.