From 23cad8d782e1d818b0e1993d96081628fabb1c3e Mon Sep 17 00:00:00 2001 From: Mengqi Xu <2663479778@qq.com> Date: Wed, 19 Nov 2025 00:13:59 +0800 Subject: [PATCH] Pass when lower case's evaluation response contains 'yes' for FactCheckingEvaluator and RelevancyEvaluator. Fix #4902 Signed-off-by: Mengqi Xu <2663479778@qq.com> --- .../ai/chat/evaluation/FactCheckingEvaluator.java | 2 +- .../ai/chat/evaluation/RelevancyEvaluator.java | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java index 103e5d03796..0d6c27face3 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java @@ -138,7 +138,7 @@ public EvaluationResponse evaluate(EvaluationRequest evaluationRequest) { .call() .content(); - boolean passing = "yes".equalsIgnoreCase(evaluationResponse); + boolean passing = evaluationResponse != null && evaluationResponse.toLowerCase().contains("yes"); return new EvaluationResponse(passing, "", Collections.emptyMap()); } diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java index 9de2c181fe0..a2d1056bbec 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java @@ -77,12 +77,8 @@ public EvaluationResponse evaluate(EvaluationRequest evaluationRequest) { String evaluationResponse = this.chatClientBuilder.build().prompt().user(userMessage).call().content(); - boolean passing = false; - float score = 0; - if ("yes".equalsIgnoreCase(evaluationResponse)) { - passing = true; - score = 1; - } + boolean passing = evaluationResponse != null && evaluationResponse.toLowerCase().contains("yes"); + float score = passing ? 1 : 0; return new EvaluationResponse(passing, score, "", Collections.emptyMap()); }