Skip to content

Commit 2ed94b8

Browse files
committed
Switch to error for empty content filter configs
1 parent 77b034b commit 2ed94b8

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/AzureContentFilter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public enum Sensitivity {
4848
@Nonnull
4949
com.sap.ai.sdk.orchestration.client.model.FilterConfig toFilterConfigDTO() {
5050
val dto = AzureContentSafety.create();
51+
if (hate == null && selfHarm == null && sexual == null && violence == null) {
52+
throw new IllegalStateException(
53+
"When configuring an azure content filter, at least one filter category must be set");
54+
}
55+
5156
if (hate != null) {
5257
dto.hate(fromValue(hate.value));
5358
}
@@ -60,6 +65,7 @@ com.sap.ai.sdk.orchestration.client.model.FilterConfig toFilterConfigDTO() {
6065
if (violence != null) {
6166
dto.violence(fromValue(violence.value));
6267
}
68+
6369
return com.sap.ai.sdk.orchestration.client.model.FilterConfig.create()
6470
.type(com.sap.ai.sdk.orchestration.client.model.FilterConfig.TypeEnum.AZURE_CONTENT_SAFETY)
6571
.config(dto);

orchestration/src/test/java/com/sap/ai/sdk/orchestration/ModuleConfigFactoryTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sap.ai.sdk.orchestration;
22

33
import static com.sap.ai.sdk.orchestration.AzureContentFilter.Sensitivity.HIGH;
4+
import static com.sap.ai.sdk.orchestration.AzureContentFilter.Sensitivity.LOW;
45
import static com.sap.ai.sdk.orchestration.ModuleConfigFactory.toModuleConfigDTO;
56
import static com.sap.ai.sdk.orchestration.client.model.FilterConfig.TypeEnum.AZURE_CONTENT_SAFETY;
67
import static org.assertj.core.api.Assertions.assertThat;
@@ -138,8 +139,8 @@ void testOutputFilter() {
138139

139140
@Test
140141
void testInputAndOutputFilter() {
141-
var inputFilter = new AzureContentFilter();
142-
var outputFilter = new AzureContentFilter();
142+
var inputFilter = new AzureContentFilter().hate(HIGH);
143+
var outputFilter = new AzureContentFilter().violence(LOW);
143144
config.withInputContentFilter(inputFilter);
144145
config.withOutputContentFilter(outputFilter);
145146

@@ -149,6 +150,15 @@ void testInputAndOutputFilter() {
149150
assertThat(result.getOutput().getFilters()).isNotEmpty();
150151
}
151152

153+
@Test
154+
void testEmptyFilter() {
155+
var inputFilter = new AzureContentFilter();
156+
assertThatThrownBy(inputFilter::toFilterConfigDTO)
157+
.isInstanceOf(IllegalStateException.class)
158+
.hasMessageContaining(
159+
"When configuring an azure content filter, at least one filter category must be set");
160+
}
161+
152162
@Test
153163
void testMasking() {
154164
var maskingConfig = DpiMaskingConfig.anonymization().withEntities(DPIEntities.ADDRESS);

0 commit comments

Comments
 (0)