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
-
创建一个 Mistral AI 账户并获取 API 密钥。您可以在 Mistral AI registration page 注册,并在 API Keys page 生成 API 密钥。
-
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.
-
将
spring-ai-mistral-ai
依赖项添加到您项目的构建文件中。更多信息请参阅 Dependency Management 部分。 -
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'
}
|
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
审核自动配置的启用和禁用现在通过前缀为 Enabling and disabling of the moderation auto-configurations are now configured via top level properties with the prefix 要启用, To enable, spring.ai.model.moderation=mistral (It is enabled by default) 要禁用, 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 |
您可以覆盖通用的 |
You can override the common |
所有以 |
All properties prefixed with |
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'
}
|
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);