审核(Moderation)
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
简介
Spring AI 支持由 Mistral AI 推出并基于 Mistral 审核模型的全新审核服务。该服务可检测文本内容是否违反多项策略维度。有关 Mistral AI 审核模型的详细信息,请参阅此 链接。
先决条件
-
创建 Mistral AI 账户并获取 API 密钥。请访问 Mistral AI 注册页面 完成注册,并在 API Keys 页面 生成密钥。
-
将
spring-ai-mistral-ai
依赖添加至项目的构建文件中。详细信息请参阅 “依赖管理” 部分。
自动配置
Spring AI 自动配置及 Starter 模块的 Artifact 名称已发生重大变更。更多信息请参阅 升级说明。 |
Spring AI 为 Mistral AI 审核模型提供 Spring Boot 自动配置。启用该功能需在项目的 Maven pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-mistral-ai</artifactId>
</dependency>
或添加到 Gradle build.gradle
构建文件:
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-mistral-ai'
}
请参考 “依赖管理” 部分将 Spring AI BOM 添加至构建文件。 |
审核配置
连接配置
spring.ai.mistralai
是用于连接 Mistral AI 的属性前缀。
属性 |
说明 |
默认值 |
spring.ai.mistralai.base-url |
要连接到的 URL |
|
spring.ai.mistralai.api-key |
API Key |
- |
配置属性
审核自动配置的启用/禁用现在通过前缀为
此项变更为支持多模型配置。 |
spring.ai.mistralai.moderation
是用于配置 Mistral AI 审核模型的属性前缀。
属性 |
说明 |
默认值 |
spring.ai.model.moderation |
启用审核模型 |
mistral |
spring.ai.mistralai.moderation.base-url |
要连接到的 URL |
|
spring.ai.mistralai.moderation.api-key |
API Key |
- |
spring.ai.mistralai.moderation.options.model |
审核使用的模型 ID |
mistral-moderation-latest |
可覆盖通用配置 spring.ai.mistralai.base-url 和 spring.ai.mistralai.api-key 。若设置 spring.ai.mistralai.moderation.base-url 和 spring.ai.mistralai.moderation.api-key ,这些属性将优先于通用配置。此功能适用于需为不同模型及不同模型端点使用不同 Mistral AI 账户的场景。
|
所有以 spring.ai.mistralai.moderation.options 为前缀的属性均可在运行时被覆盖。
|
运行时选项
MistralAiModerationOptions
类提供审核请求的配置选项。启动时使用 spring.ai.mistralai.moderation
指定的配置,但运行时可通过该类的实例覆盖这些配置。
例如:
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());
}
手动配置
将 spring-ai-mistral-ai
依赖添加至项目的 Maven pom.xml
文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mistral-ai</artifactId>
</dependency>
或添加到 Gradle build.gradle
构建文件中:
dependencies {
implementation 'org.springframework.ai:spring-ai-mistral-ai'
}
请参考 “依赖管理” 部分将 Spring AI BOM 添加至构建文件。 |
接下来,创建一个 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);