Skip to content

Commit 789e12b

Browse files
committed
Format
1 parent a9b48d4 commit 789e12b

File tree

7 files changed

+30
-33
lines changed

7 files changed

+30
-33
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.fasterxml.jackson.core.JsonProcessingException;
66
import com.fasterxml.jackson.databind.ObjectMapper;
77
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
8-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationOutputFilterException;
8+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Output;
99
import com.sap.ai.sdk.orchestration.model.AssistantChatMessage;
1010
import com.sap.ai.sdk.orchestration.model.ChatMessage;
1111
import com.sap.ai.sdk.orchestration.model.ChatMessageContent;
@@ -36,16 +36,16 @@ public class OrchestrationChatResponse {
3636
* <p>Note: If there are multiple choices only the first one is returned
3737
*
3838
* @return the message content or empty string.
39-
* @throws OrchestrationOutputFilterException if the content filter filtered the output.
39+
* @throws Output if the content filter filtered the output.
4040
*/
4141
@Nonnull
42-
public String getContent() throws OrchestrationOutputFilterException {
42+
public String getContent() throws Output {
4343
final var choice = getChoice();
4444

4545
if ("content_filter".equals(choice.getFinishReason())) {
4646
final var filterDetails = Try.of(this::getOutputFilteringChoices).getOrElseGet(e -> Map.of());
4747
final var message = "Content filter filtered the output.";
48-
throw new OrchestrationOutputFilterException(message, filterDetails);
48+
throw new Output(message, filterDetails);
4949
}
5050
return choice.getMessage().getContent();
5151
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.fasterxml.jackson.databind.node.ObjectNode;
99
import com.google.common.annotations.Beta;
1010
import com.sap.ai.sdk.core.AiCoreService;
11-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationOutputFilterException;
11+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Output;
1212
import com.sap.ai.sdk.orchestration.model.CompletionPostRequest;
1313
import com.sap.ai.sdk.orchestration.model.CompletionPostResponse;
1414
import com.sap.ai.sdk.orchestration.model.EmbeddingsPostRequest;
@@ -115,13 +115,13 @@ public Stream<String> streamChatCompletion(
115115
}
116116

117117
private static void throwOnContentFilter(@Nonnull final OrchestrationChatCompletionDelta delta)
118-
throws OrchestrationOutputFilterException {
118+
throws Output {
119119
final String finishReason = delta.getFinishReason();
120120
if (finishReason != null && finishReason.equals("content_filter")) {
121121
final var filterDetails =
122122
Try.of(() -> getOutputFilteringChoices(delta)).getOrElseGet(e -> Map.of());
123123
final var message = "Content filter filtered the output.";
124-
throw new OrchestrationOutputFilterException(message, filterDetails);
124+
throw new Output(message, filterDetails);
125125
}
126126
}
127127

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.google.common.annotations.Beta;
44
import com.sap.ai.sdk.core.common.ClientExceptionFactory;
5-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationInputFilterException;
5+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Input;
66
import com.sap.ai.sdk.orchestration.model.ErrorResponse;
77
import com.sap.ai.sdk.orchestration.model.GenericModuleResult;
88
import com.sap.ai.sdk.orchestration.model.ModuleResults;
@@ -29,7 +29,7 @@ public OrchestrationClientException buildFromClientError(
2929

3030
final var inputFilterDetails = extractInputFilterDetails(clientError);
3131
if (!inputFilterDetails.isEmpty()) {
32-
return new OrchestrationInputFilterException(message, clientError, inputFilterDetails);
32+
return new Input(message, clientError, inputFilterDetails);
3333
}
3434

3535
return new OrchestrationClientException(message, clientError);

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ public LlamaGuard38b getLlamaGuard38b() {
3737
}
3838

3939
/** Exception thrown when an error occurs during input filtering. */
40-
public static class OrchestrationInputFilterException extends OrchestrationFilterException {
40+
public static class Input extends OrchestrationFilterException {
4141
/**
4242
* Constructs a new OrchestrationInputFilterException.
4343
*
4444
* @param message The detail message.
4545
* @param clientError The specific client error.
4646
* @param filterDetails Details about the filter that caused the exception.
4747
*/
48-
OrchestrationInputFilterException(
48+
Input(
4949
@Nonnull final String message,
5050
@Nonnull final OrchestrationError clientError,
5151
@Nonnull final Map<String, Object> filterDetails) {
@@ -75,15 +75,14 @@ public AzureContentSafetyInput getAzureContentSafetyInput() {
7575
* Exception thrown when an error occurs during output filtering, specifically when the finish
7676
* reason is a content filter.
7777
*/
78-
public static class OrchestrationOutputFilterException extends OrchestrationFilterException {
78+
public static class Output extends OrchestrationFilterException {
7979
/**
8080
* Constructs a new OrchestrationOutputFilterException.
8181
*
8282
* @param message The detail message.
8383
* @param filterDetails Details about the filter that caused the exception.
8484
*/
85-
OrchestrationOutputFilterException(
86-
@Nonnull final String message, @Nonnull final Map<String, Object> filterDetails) {
85+
Output(@Nonnull final String message, @Nonnull final Map<String, Object> filterDetails) {
8786
super(message);
8887
this.filterDetails = filterDetails;
8988
}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
4141
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
4242
import com.github.tomakehurst.wiremock.stubbing.Scenario;
43-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationInputFilterException;
44-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationOutputFilterException;
4543
import com.sap.ai.sdk.orchestration.model.ChatDelta;
4644
import com.sap.ai.sdk.orchestration.model.DPIConfig;
4745
import com.sap.ai.sdk.orchestration.model.DPIEntities;
@@ -424,7 +422,7 @@ void inputFilteringStrict() {
424422

425423
try {
426424
client.chatCompletion(prompt, configWithFilter);
427-
} catch (OrchestrationInputFilterException e) {
425+
} catch (OrchestrationFilterException.Input e) {
428426
assertThat(e.getMessage())
429427
.isEqualTo(
430428
"Request failed with status 400 (Bad Request): 400 - Filtering Module - Input Filter: Prompt filtered due to safety violations. Please modify the prompt and try again.");
@@ -477,7 +475,7 @@ void outputFilteringStrict() {
477475

478476
try {
479477
client.chatCompletion(prompt, configWithFilter).getContent();
480-
} catch (OrchestrationOutputFilterException e) {
478+
} catch (Output e) {
481479
assertThat(e.getMessage()).isEqualTo("Content filter filtered the output.");
482480
assertThat(e.getFilterDetails())
483481
.isEqualTo(
@@ -730,9 +728,9 @@ void testThrowsOnContentFilter() {
730728
// this must not throw, since the stream is lazily evaluated
731729
var stream = mock.streamChatCompletion(new OrchestrationPrompt(""), config);
732730
assertThatThrownBy(stream::toList)
733-
.isInstanceOf(OrchestrationOutputFilterException.class)
731+
.isInstanceOf(Output.class)
734732
.hasMessage("Content filter filtered the output.")
735-
.extracting(e -> ((OrchestrationOutputFilterException) e).getFilterDetails())
733+
.extracting(e -> ((Output) e).getFilterDetails())
736734
.isEqualTo(Map.of("azure_content_safety", Map.of("hate", 0, "self_harm", 0)));
737735
}
738736

@@ -754,7 +752,7 @@ void streamChatCompletionOutputFilterErrorHandling() throws IOException {
754752

755753
try (Stream<String> stream = client.streamChatCompletion(prompt, config)) {
756754
assertThatThrownBy(() -> stream.forEach(System.out::println))
757-
.isInstanceOf(OrchestrationOutputFilterException.class)
755+
.isInstanceOf(Output.class)
758756
.hasMessage("Content filter filtered the output.");
759757
}
760758

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import com.sap.ai.sdk.app.services.OrchestrationService;
66
import com.sap.ai.sdk.orchestration.AzureFilterThreshold;
77
import com.sap.ai.sdk.orchestration.OrchestrationChatResponse;
8-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationInputFilterException;
9-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationOutputFilterException;
8+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Input;
9+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Output;
1010
import com.sap.ai.sdk.orchestration.model.AzureContentSafetyInput;
1111
import com.sap.ai.sdk.orchestration.model.AzureContentSafetyOutput;
1212
import com.sap.ai.sdk.orchestration.model.DPIEntities;
@@ -128,7 +128,7 @@ Object inputFiltering(
128128
final OrchestrationChatResponse response;
129129
try {
130130
response = service.inputFiltering(policy);
131-
} catch (OrchestrationInputFilterException e) {
131+
} catch (Input e) {
132132
final var msg =
133133
new StringBuilder(
134134
"[Http %d] Failed to obtain a response as the content was flagged by input filter. "
@@ -160,7 +160,7 @@ Object outputFiltering(
160160
final String content;
161161
try {
162162
content = response.getContent();
163-
} catch (OrchestrationOutputFilterException e) {
163+
} catch (Output e) {
164164
final var msg =
165165
new StringBuilder(
166166
"Failed to obtain a response as the content was flagged by output filter. ");
@@ -189,7 +189,7 @@ Object llamaGuardInputFiltering(
189189
final OrchestrationChatResponse response;
190190
try {
191191
response = service.llamaGuardInputFilter(enabled);
192-
} catch (OrchestrationInputFilterException e) {
192+
} catch (Input e) {
193193
var msg =
194194
"[Http %d] Failed to obtain a response as the content was flagged by input filter. "
195195
.formatted(e.getStatusCode());

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import com.sap.ai.sdk.orchestration.Message;
1616
import com.sap.ai.sdk.orchestration.OrchestrationClient;
1717
import com.sap.ai.sdk.orchestration.OrchestrationClientException;
18-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationInputFilterException;
19-
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.OrchestrationOutputFilterException;
18+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Input;
19+
import com.sap.ai.sdk.orchestration.OrchestrationFilterException.Output;
2020
import com.sap.ai.sdk.orchestration.OrchestrationModuleConfig;
2121
import com.sap.ai.sdk.orchestration.OrchestrationPrompt;
2222
import com.sap.ai.sdk.orchestration.TemplateConfig;
@@ -221,7 +221,7 @@ void testInputFilteringStrict() {
221221
"Prompt filtered due to safety violations. Please modify the prompt and try again.")
222222
.hasMessageContaining("400 (Bad Request)")
223223
.isInstanceOfSatisfying(
224-
OrchestrationInputFilterException.class,
224+
Input.class,
225225
e -> {
226226
var actualAzureContentSafety = e.getAzureContentSafetyInput();
227227
assertThat(actualAzureContentSafety).isNotNull();
@@ -253,7 +253,7 @@ void testOutputFilteringStrict() {
253253
assertThatThrownBy(response::getContent)
254254
.hasMessageContaining("Content filter filtered the output.")
255255
.isInstanceOfSatisfying(
256-
OrchestrationOutputFilterException.class,
256+
Output.class,
257257
e -> {
258258
var actualAzureContentSafety = e.getAzureContentSafetyOutput();
259259
assertThat(actualAzureContentSafety).isNotNull();
@@ -280,12 +280,12 @@ void testOutputFilteringLenient() {
280280
@Test
281281
void testLlamaGuardEnabled() {
282282
assertThatThrownBy(() -> service.llamaGuardInputFilter(true))
283-
.isInstanceOf(OrchestrationInputFilterException.class)
283+
.isInstanceOf(Input.class)
284284
.hasMessageContaining(
285285
"Prompt filtered due to safety violations. Please modify the prompt and try again.")
286286
.hasMessageContaining("400 (Bad Request)")
287287
.isInstanceOfSatisfying(
288-
OrchestrationInputFilterException.class,
288+
Input.class,
289289
e -> {
290290
var llamaGuard38b = e.getLlamaGuard38b();
291291
assertThat(llamaGuard38b).isNotNull();
@@ -419,7 +419,7 @@ void testStreamingErrorHandlingInputFilter() {
419419
val configWithFilter = config.withInputFiltering(filterConfig);
420420

421421
assertThatThrownBy(() -> client.streamChatCompletion(prompt, configWithFilter))
422-
.isInstanceOf(OrchestrationInputFilterException.class)
422+
.isInstanceOf(Input.class)
423423
.hasMessageContaining("status 400 (Bad Request)")
424424
.hasMessageContaining("Filtering Module - Input Filter");
425425
}

0 commit comments

Comments
 (0)