Skip to content

Commit e81cd08

Browse files
quaffericbottard
authored andcommitted
Revise FactCheckingEvaluator
1. use required arguments as parameters of `builder()`. 2. deprecate constructors. See #4652 Signed-off-by: Yanming Zhou <[email protected]>
1 parent cb4af07 commit e81cd08

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
* @author Eddú Meléndez
6363
* @author Mark Pollack
6464
* @author guan xu
65+
* @author Yanming Zhou
6566
* @see Evaluator
6667
* @see EvaluationRequest
6768
* @see EvaluationResponse
@@ -97,7 +98,9 @@ public class FactCheckingEvaluator implements Evaluator {
9798
* the default evaluation prompt suitable for general purpose LLMs.
9899
* @param chatClientBuilder The builder for the ChatClient used to perform the
99100
* evaluation
101+
* @deprecated in favor of {@link #builder(ChatClient.Builder)}
100102
*/
103+
@Deprecated(forRemoval = true)
101104
public FactCheckingEvaluator(ChatClient.Builder chatClientBuilder) {
102105
this(chatClientBuilder, null);
103106
}
@@ -108,7 +111,9 @@ public FactCheckingEvaluator(ChatClient.Builder chatClientBuilder) {
108111
* @param chatClientBuilder The builder for the ChatClient used to perform the
109112
* evaluation
110113
* @param evaluationPrompt The prompt text to use for evaluation
114+
* @deprecated in favor of {@link #builder(ChatClient.Builder)}
111115
*/
116+
@Deprecated
112117
public FactCheckingEvaluator(ChatClient.Builder chatClientBuilder, @Nullable String evaluationPrompt) {
113118
Assert.notNull(chatClientBuilder, "chatClientBuilder cannot be null");
114119
this.chatClientBuilder = chatClientBuilder;
@@ -123,7 +128,9 @@ public FactCheckingEvaluator(ChatClient.Builder chatClientBuilder, @Nullable Str
123128
* @return A FactCheckingEvaluator configured for Bespoke Minicheck
124129
*/
125130
public static FactCheckingEvaluator forBespokeMinicheck(ChatClient.Builder chatClientBuilder) {
126-
return new FactCheckingEvaluator(chatClientBuilder, BESPOKE_EVALUATION_PROMPT_TEXT);
131+
return FactCheckingEvaluator.builder(chatClientBuilder)
132+
.evaluationPrompt(BESPOKE_EVALUATION_PROMPT_TEXT)
133+
.build();
127134
}
128135

129136
/**
@@ -149,8 +156,8 @@ public EvaluationResponse evaluate(EvaluationRequest evaluationRequest) {
149156
return new EvaluationResponse(passing, "", Collections.emptyMap());
150157
}
151158

152-
public static FactCheckingEvaluator.Builder builder() {
153-
return new FactCheckingEvaluator.Builder();
159+
public static FactCheckingEvaluator.Builder builder(ChatClient.Builder chatClientBuilder) {
160+
return new FactCheckingEvaluator.Builder().chatClientBuilder(chatClientBuilder);
154161
}
155162

156163
public static final class Builder {

spring-ai-client-chat/src/test/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluatorTests.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,28 @@
2929
* Unit tests for {@link FactCheckingEvaluator}.
3030
*
3131
* @author guan xu
32+
* @author Yanming Zhou
3233
*/
3334
class FactCheckingEvaluatorTests {
3435

36+
@SuppressWarnings("deprecation")
3537
@Test
3638
void whenChatClientBuilderIsNullThenThrow() {
3739
assertThatThrownBy(() -> new FactCheckingEvaluator(null)).isInstanceOf(IllegalArgumentException.class)
3840
.hasMessageContaining("chatClientBuilder cannot be null");
3941

40-
assertThatThrownBy(() -> FactCheckingEvaluator.builder().chatClientBuilder(null).build())
42+
assertThatThrownBy(() -> FactCheckingEvaluator.builder(null).build())
4143
.isInstanceOf(IllegalArgumentException.class)
4244
.hasMessageContaining("chatClientBuilder cannot be null");
4345
}
4446

47+
@SuppressWarnings("deprecation")
4548
@Test
4649
void whenEvaluationPromptIsNullThenUseDefaultEvaluationPromptText() {
4750
FactCheckingEvaluator evaluator = new FactCheckingEvaluator(ChatClient.builder(mock(ChatModel.class)));
4851
assertThat(evaluator).isNotNull();
4952

50-
evaluator = FactCheckingEvaluator.builder()
51-
.chatClientBuilder(ChatClient.builder(mock(ChatModel.class)))
52-
.build();
53+
evaluator = FactCheckingEvaluator.builder(ChatClient.builder(mock(ChatModel.class))).build();
5354
assertThat(evaluator).isNotNull();
5455
}
5556

0 commit comments

Comments
 (0)