From 4eeeb83d3f70e968b72b3166c6c1324c811246e2 Mon Sep 17 00:00:00 2001 From: Ilayaperumal Gopinathan Date: Mon, 28 Apr 2025 15:46:03 +0100 Subject: [PATCH] Add default ChatOptions to Prompt - Remove @Nullable on ChatOptions - By default, pass the default ChatOptions from the DefaultChatOptionsBuilder Signed-off-by: Ilayaperumal Gopinathan --- .../chat/client/DefaultChatClientTests.java | 3 ++- .../ai/chat/prompt/Prompt.java | 20 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/DefaultChatClientTests.java b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/DefaultChatClientTests.java index 3a8d269fd..bdb237606 100644 --- a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/DefaultChatClientTests.java +++ b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/DefaultChatClientTests.java @@ -110,7 +110,8 @@ class DefaultChatClientTests { assertThat(spec.getMessages()).hasSize(2); assertThat(spec.getMessages().get(0).getText()).isEqualTo("instructions"); assertThat(spec.getMessages().get(1).getText()).isEqualTo("my question"); - assertThat(spec.getChatOptions()).isNull(); + assertThat(spec.getChatOptions()).isNotNull(); + assertThat(spec.getChatOptions()).isInstanceOf(ChatOptions.class); } @Test diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java index 6993cd297..891b9997c 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java @@ -45,7 +45,6 @@ public class Prompt implements ModelRequest> { private final List messages; - @Nullable private ChatOptions chatOptions; public Prompt(String contents) { @@ -57,24 +56,24 @@ public class Prompt implements ModelRequest> { } public Prompt(List messages) { - this(messages, null); + this(messages, ChatOptions.builder().build()); } public Prompt(Message... messages) { - this(Arrays.asList(messages), null); + this(Arrays.asList(messages), ChatOptions.builder().build()); } - public Prompt(String contents, @Nullable ChatOptions chatOptions) { + public Prompt(String contents, ChatOptions chatOptions) { this(new UserMessage(contents), chatOptions); } - public Prompt(Message message, @Nullable ChatOptions chatOptions) { + public Prompt(Message message, ChatOptions chatOptions) { this(Collections.singletonList(message), chatOptions); } - public Prompt(List messages, @Nullable ChatOptions chatOptions) { + public Prompt(List messages, ChatOptions chatOptions) { this.messages = messages; - this.chatOptions = chatOptions; + this.chatOptions = (chatOptions != null) ? chatOptions : ChatOptions.builder().build(); } public String getContents() { @@ -86,7 +85,6 @@ public class Prompt implements ModelRequest> { } @Override - @Nullable public ChatOptions getOptions() { return this.chatOptions; } @@ -118,7 +116,7 @@ public class Prompt implements ModelRequest> { } public Prompt copy() { - return new Prompt(instructionsCopy(), null == this.chatOptions ? null : this.chatOptions.copy()); + return new Prompt(instructionsCopy(), this.chatOptions.copy()); } private List instructionsCopy() { @@ -155,9 +153,7 @@ public class Prompt implements ModelRequest> { public Builder mutate() { Builder builder = new Builder().messages(instructionsCopy()); - if (this.chatOptions != null) { - builder.chatOptions(this.chatOptions.copy()); - } + builder.chatOptions(this.chatOptions.copy()); return builder; }