diff --git a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java index bff2c8e1d..18a033bd1 100644 --- a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java +++ b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OrchestrationController.java @@ -63,11 +63,7 @@ ResponseEntity streamChatCompletion() { final Runnable consumeStream = () -> { try (stream) { - stream.forEach( - deltaMessage -> { - log.info("Service: {}", deltaMessage); - send(emitter, deltaMessage); - }); + stream.forEach(deltaMessage -> send(emitter, deltaMessage)); } finally { emitter.complete(); } @@ -191,7 +187,7 @@ Object inputFiltering( try { response = service.inputFiltering(policy); } catch (OrchestrationFilterException.Input e) { - final var msg = + final var errorMessage = new StringBuilder( "[Http %d] Failed to obtain a response as the content was flagged by input filter. " .formatted(e.getStatusCode())); @@ -199,10 +195,11 @@ Object inputFiltering( Optional.ofNullable(e.getAzureContentSafetyInput()) .map(AzureContentSafetyInput::getViolence) .filter(rating -> rating.compareTo(policy.getAzureThreshold()) > 0) - .ifPresent(rating -> msg.append("Violence score %d".formatted(rating.getValue()))); + .ifPresent( + rating -> errorMessage.append("Violence score %d".formatted(rating.getValue()))); - log.debug(msg.toString(), e); - return ResponseEntity.internalServerError().body(msg.toString()); + log.error(errorMessage.toString(), e); + return ResponseEntity.internalServerError().body(errorMessage.toString()); } if ("json".equals(format)) { @@ -224,17 +221,18 @@ Object outputFiltering( try { content = response.getContent(); } catch (OrchestrationFilterException.Output e) { - final var msg = + final var errorMessage = new StringBuilder( "Failed to obtain a response as the content was flagged by output filter. "); Optional.ofNullable(e.getAzureContentSafetyOutput()) .map(AzureContentSafetyOutput::getViolence) .filter(rating -> rating.compareTo(policy.getAzureThreshold()) > 0) - .ifPresent(rating -> msg.append("Violence score %d ".formatted(rating.getValue()))); + .ifPresent( + rating -> errorMessage.append("Violence score %d ".formatted(rating.getValue()))); - log.debug(msg.toString(), e); - return ResponseEntity.internalServerError().body(msg.toString()); + log.error(errorMessage.toString(), e); + return ResponseEntity.internalServerError().body(errorMessage.toString()); } if ("json".equals(format)) { @@ -253,14 +251,14 @@ Object llamaGuardInputFiltering( try { response = service.llamaGuardInputFilter(enabled); } catch (OrchestrationFilterException.Input e) { - var msg = + var errorMessage = "[Http %d] Failed to obtain a response as the content was flagged by input filter. " .formatted(e.getStatusCode()); if (e.getLlamaGuard38b() != null) { - msg += " Violent crimes are %s".formatted(e.getLlamaGuard38b().isViolentCrimes()); + errorMessage += " Violent crimes are %s".formatted(e.getLlamaGuard38b().isViolentCrimes()); } - log.debug(msg, e); - return ResponseEntity.internalServerError().body(msg); + log.error(errorMessage, e); + return ResponseEntity.internalServerError().body(errorMessage); } if ("json".equals(format)) { diff --git a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationController.java index a775f00d6..e4226674c 100644 --- a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationController.java +++ b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationController.java @@ -70,9 +70,10 @@ Object inputFiltering( try { response = service.inputFiltering(policy); } catch (OrchestrationClientException e) { - final var msg = "Failed to obtain a response as the content was flagged by input filter."; - log.debug(msg, e); - return ResponseEntity.internalServerError().body(msg); + final var errorMessage = + "Failed to obtain a response as the content was flagged by input filter."; + log.error(errorMessage, e); + return ResponseEntity.internalServerError().body(errorMessage); } if ("json".equals(format)) { diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/AiCoreOpenAiTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/AiCoreOpenAiTest.java index 4a644d7f3..6b9c86bf2 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/AiCoreOpenAiTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/AiCoreOpenAiTest.java @@ -254,6 +254,7 @@ void testPromptCaching() { assertThat(second).isNotNull(); assertThat(second.promptCacheKey()).contains(cacheKey); assertThat(second.usage().isPresent()).isTrue(); + assertThat(second.usage().get().inputTokensDetails().cachedTokens()).isGreaterThanOrEqualTo(0); } } diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiDeprecatedTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiDeprecatedTest.java index 3d6aac716..413a1f235 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiDeprecatedTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiDeprecatedTest.java @@ -9,11 +9,9 @@ import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatCompletionParameters; import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatMessage.OpenAiChatUserMessage; import java.util.concurrent.atomic.AtomicInteger; -import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -@Slf4j class OpenAiDeprecatedTest { OpenAiServiceDeprecated service; @@ -57,7 +55,6 @@ void streamChatCompletion() { .forEach( delta -> { final String deltaContent = delta.getDeltaContent(); - log.info("delta: {}", delta); if (!deltaContent.isEmpty()) { filledDeltaCount.incrementAndGet(); } diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java index 5548ce2cb..37f43ad11 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java @@ -12,11 +12,9 @@ import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -@Slf4j class OpenAiTest { OpenAiService service; @@ -63,7 +61,6 @@ void streamChatCompletion() { delta -> { usageRef.compareAndExchange(null, delta.getCompletionUsage()); final String deltaContent = delta.getDeltaContent(); - log.info("delta: {}", delta); if (!deltaContent.isEmpty()) { filledDeltaCount.incrementAndGet(); } diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java index 3e21116ee..24099dc6c 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OrchestrationTest.java @@ -74,7 +74,6 @@ void testStreamChatCompletion() { // foreach consumes all elements, closing the stream at the end .forEach( delta -> { - log.info("delta: {}", delta); if (!delta.isEmpty()) { filledDeltaCount.incrementAndGet(); } @@ -625,7 +624,6 @@ void testCompletionWithFallbackStreaming() { val filledDeltaCount = new AtomicInteger(0); stream.forEach( delta -> { - log.info("delta: {}", delta); if (!delta.isEmpty()) { filledDeltaCount.incrementAndGet(); } @@ -639,7 +637,6 @@ void testStreamDeltasWithInlineConfig() { val filledDeltaCount = new AtomicInteger(0); stream.forEach( delta -> { - log.info("delta: {}", delta); if (!delta.getDeltaContent().isEmpty()) { filledDeltaCount.incrementAndGet(); } @@ -653,7 +650,6 @@ void testStreamDeltasWithReferenceById() { val filledDeltaCount = new AtomicInteger(0); stream.forEach( delta -> { - log.info("delta: {}", delta); if (!delta.getDeltaContent().isEmpty()) { filledDeltaCount.incrementAndGet(); } @@ -667,7 +663,6 @@ void testStreamDeltasWithReferenceByScenario() { val filledDeltaCount = new AtomicInteger(0); stream.forEach( delta -> { - log.info("delta: {}", delta); if (!delta.getDeltaContent().isEmpty()) { filledDeltaCount.incrementAndGet(); } diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOpenAiTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOpenAiTest.java index f4134a5a3..e5acb1c3d 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOpenAiTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOpenAiTest.java @@ -13,8 +13,6 @@ class SpringAiOpenAiTest { private final SpringAiOpenAiService service = new SpringAiOpenAiService(); - private static final org.slf4j.Logger log = - org.slf4j.LoggerFactory.getLogger(SpringAiOrchestrationTest.class); @Test void testEmbedStrings() { @@ -46,7 +44,6 @@ void testStreamChatCompletion() { // foreach consumes all elements, closing the stream at the end .forEach( delta -> { - log.info("delta: {}", delta); String text = delta.getResult().getOutput().getText(); if (text != null && !text.isEmpty()) { filledDeltaCount.incrementAndGet(); @@ -86,7 +83,6 @@ void testChatMemory() { ChatResponse response = service.chatMemory(); assertThat(response).isNotNull(); String text = response.getResult().getOutput().getText(); - log.info(text); assertThat(text) .containsAnyOf( "French", "onion", "pastries", "cheese", "baguette", "coq au vin", "foie gras"); diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationTest.java index 93c8ec384..369520b5c 100644 --- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationTest.java +++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationTest.java @@ -35,8 +35,8 @@ void testStreamChatCompletion() { // foreach consumes all elements, closing the stream at the end .forEach( delta -> { - log.info("delta: {}", delta); - if (!delta.getResult().getOutput().getText().isEmpty()) { + final var text = delta.getResult().getOutput().getText(); + if (text != null && !text.isEmpty()) { filledDeltaCount.incrementAndGet(); } }); @@ -153,7 +153,6 @@ void testChatMemory() { ChatResponse response = service.chatMemory(); assertThat(response).isNotNull(); String text = response.getResult().getOutput().getText(); - log.info(text); assertThat(text) .containsAnyOf( "French", "onion", "pastries", "cheese", "baguette", "coq au vin", "foie gras");