Skip to content

Commit c631340

Browse files
ilayaperumalgmarkpollack
authored andcommitted
Remove deprecated APIs for 1.1.0 release
Remove deprecated constructors, methods, and classes scheduled for removal: - Delete deprecated OllamaOptions class (replaced by OllamaChatOptions/OllamaEmbeddingOptions) - Delete deprecated EmbeddingOptionsBuilder class - Remove deprecated constructors from: - QuestionAnswerAdvisor - DeepSeekAssistantMessage - MistralAiChatModel, MistralAiEmbeddingModel, MistralAiModerationModel - MistralAiApi, MistralAiModerationApi - Remove deprecated builder methods: - BedrockTitanEmbeddingOptions.Builder.withInputType() - OllamaChatModel.Builder.defaultOptions(OllamaOptions) - OllamaEmbeddingModel.Builder.defaultOptions(OllamaOptions) Update all usages throughout codebase: - Migrate AssistantMessage construction to builder pattern - Replace EmbeddingOptionsBuilder with EmbeddingOptions.builder() - Update OllamaOptions references to use specific option types - Update vector stores and tests to use builder patterns Update reference docs to fix the deprecations Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
1 parent 80527b2 commit c631340

File tree

73 files changed

+174
-1830
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+174
-1830
lines changed

advisors/spring-ai-advisors-vector-store/src/main/java/org/springframework/ai/chat/client/advisor/vectorstore/QuestionAnswerAdvisor.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,6 @@ public class QuestionAnswerAdvisor implements BaseAdvisor {
8383

8484
private final int order;
8585

86-
/**
87-
* Construct instance by given VectorStore
88-
* @param vectorStore the given VectorStore
89-
* @deprecated in favor of {@link #builder(VectorStore)}}
90-
*/
91-
@Deprecated
92-
public QuestionAnswerAdvisor(VectorStore vectorStore) {
93-
this(vectorStore, SearchRequest.builder().build(), DEFAULT_PROMPT_TEMPLATE, BaseAdvisor.DEFAULT_SCHEDULER,
94-
DEFAULT_ORDER);
95-
}
96-
9786
QuestionAnswerAdvisor(VectorStore vectorStore, SearchRequest searchRequest, @Nullable PromptTemplate promptTemplate,
9887
@Nullable Scheduler scheduler, int order) {
9988
Assert.notNull(vectorStore, "vectorStore cannot be null");

auto-configurations/models/spring-ai-autoconfigure-model-vertex-ai/src/test/java/org/springframework/ai/model/vertexai/autoconfigure/embedding/VertexAiTextEmbeddingModelAutoConfigurationIT.java

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

2626
import org.springframework.ai.document.Document;
2727
import org.springframework.ai.embedding.DocumentEmbeddingRequest;
28-
import org.springframework.ai.embedding.EmbeddingOptionsBuilder;
28+
import org.springframework.ai.embedding.EmbeddingOptions;
2929
import org.springframework.ai.embedding.EmbeddingResponse;
3030
import org.springframework.ai.embedding.EmbeddingResultMetadata;
3131
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
@@ -118,7 +118,7 @@ public void multimodalEmbedding() {
118118
var document = new Document("Hello World");
119119

120120
DocumentEmbeddingRequest embeddingRequest = new DocumentEmbeddingRequest(List.of(document),
121-
EmbeddingOptionsBuilder.builder().build());
121+
EmbeddingOptions.builder().build());
122122

123123
EmbeddingResponse embeddingResponse = multiModelEmbeddingModel.call(embeddingRequest);
124124
assertThat(embeddingResponse.getResults()).hasSize(1);

memory/repository/spring-ai-model-chat-memory-repository-cosmos-db/src/main/java/org/springframework/ai/chat/memory/repository/cosmosdb/CosmosDBChatMemoryRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private Message mapToMessage(Map<String, Object> doc) {
232232
}
233233

234234
return switch (messageType) {
235-
case ASSISTANT -> new AssistantMessage(content, metadata);
235+
case ASSISTANT -> AssistantMessage.builder().content(content).properties(metadata).build();
236236
case USER -> UserMessage.builder().text(content).metadata(metadata).build();
237237
case SYSTEM -> SystemMessage.builder().text(content).metadata(metadata).build();
238238
case TOOL -> ToolResponseMessage.builder().responses(List.of()).metadata(metadata).build();

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingOptions.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,6 @@ public static final class Builder {
6666

6767
private BedrockTitanEmbeddingOptions options = new BedrockTitanEmbeddingOptions();
6868

69-
@Deprecated
70-
public Builder withInputType(InputType inputType) {
71-
return this.inputType(inputType);
72-
}
73-
7469
public Builder inputType(InputType inputType) {
7570
Assert.notNull(inputType, "input type can not be null.");
7671

models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/DeepSeekAssistantMessage.java

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -34,57 +34,6 @@ public class DeepSeekAssistantMessage extends AssistantMessage {
3434

3535
private String reasoningContent;
3636

37-
/**
38-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
39-
*/
40-
@Deprecated
41-
public DeepSeekAssistantMessage(String content) {
42-
super(content);
43-
}
44-
45-
/**
46-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
47-
*/
48-
@Deprecated
49-
public DeepSeekAssistantMessage(String content, String reasoningContent) {
50-
super(content);
51-
this.reasoningContent = reasoningContent;
52-
}
53-
54-
/**
55-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
56-
*/
57-
@Deprecated
58-
public DeepSeekAssistantMessage(String content, Map<String, Object> properties) {
59-
super(content, properties);
60-
}
61-
62-
/**
63-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
64-
*/
65-
@Deprecated
66-
public DeepSeekAssistantMessage(String content, Map<String, Object> properties, List<ToolCall> toolCalls) {
67-
super(content, properties, toolCalls);
68-
}
69-
70-
/**
71-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
72-
*/
73-
@Deprecated
74-
public DeepSeekAssistantMessage(String content, String reasoningContent, Map<String, Object> properties,
75-
List<ToolCall> toolCalls) {
76-
this(content, reasoningContent, properties, toolCalls, List.of());
77-
}
78-
79-
/**
80-
* @deprecated in favor of {@link DeepSeekAssistantMessage.Builder}
81-
*/
82-
@Deprecated
83-
public DeepSeekAssistantMessage(String content, String reasoningContent, Map<String, Object> properties,
84-
List<ToolCall> toolCalls, List<Media> media) {
85-
this(content, reasoningContent, null, properties, toolCalls, media);
86-
}
87-
8837
protected DeepSeekAssistantMessage(String content, String reasoningContent, Boolean prefix,
8938
Map<String, Object> properties, List<ToolCall> toolCalls, List<Media> media) {
9039
super(content, properties, toolCalls, media);

models/spring-ai-deepseek/src/test/java/org/springframework/ai/deepseek/DeepSeekAssistantMessageTests.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DeepSeekAssistantMessageTests {
3838
@Test
3939
public void testConstructorWithContentOnly() {
4040
String content = "Hello, world!";
41-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage(content);
41+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content(content).build();
4242

4343
assertThat(message.getText()).isEqualTo(content);
4444
assertThat(message.getReasoningContent()).isNull();
@@ -49,7 +49,9 @@ public void testConstructorWithContentOnly() {
4949
public void testConstructorWithContentAndReasoningContent() {
5050
String content = "Hello, world!";
5151
String reasoningContent = "This is my reasoning";
52-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage(content, reasoningContent);
52+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content(content)
53+
.reasoningContent(reasoningContent)
54+
.build();
5355

5456
assertThat(message.getText()).isEqualTo(content);
5557
assertThat(message.getReasoningContent()).isEqualTo(reasoningContent);
@@ -63,7 +65,9 @@ public void testConstructorWithContentAndProperties() {
6365
properties.put("key1", "value1");
6466
properties.put("key2", 123);
6567

66-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage(content, properties);
68+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content(content)
69+
.properties(properties)
70+
.build();
6771

6872
assertThat(message.getText()).isEqualTo(content);
6973
assertThat(message.getMetadata()).containsAllEntriesOf(properties);
@@ -79,7 +83,10 @@ public void testConstructorWithContentPropertiesAndToolCalls() {
7983

8084
List<ToolCall> toolCalls = List.of(new ToolCall("1", "function", "myFunction", "{}"));
8185

82-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage(content, properties, toolCalls);
86+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content(content)
87+
.properties(properties)
88+
.toolCalls(toolCalls)
89+
.build();
8390

8491
assertThat(message.getText()).isEqualTo(content);
8592
assertThat(message.getMetadata()).containsAllEntriesOf(properties);
@@ -97,8 +104,12 @@ public void testConstructorWithAllParameters() {
97104
properties.put("key1", "value1");
98105
List<ToolCall> toolCalls = List.of(new ToolCall("1", "function", "myFunction", "{}"));
99106

100-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage(content, reasoningContent, prefix, properties,
101-
toolCalls, List.of());
107+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content(content)
108+
.reasoningContent(reasoningContent)
109+
.properties(properties)
110+
.toolCalls(toolCalls)
111+
.prefix(prefix)
112+
.build();
102113

103114
assertThat(message.getText()).isEqualTo(content);
104115
assertThat(message.getReasoningContent()).isEqualTo(reasoningContent);
@@ -128,7 +139,7 @@ public void testPrefixAssistantMessageFactoryMethodWithReasoning() {
128139

129140
@Test
130141
public void testSettersAndGetters() {
131-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage("test");
142+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().build();
132143

133144
String reasoningContent = "New reasoning content";
134145
Boolean prefix = false;
@@ -157,7 +168,9 @@ public void testEqualsAndHashCode() {
157168

158169
@Test
159170
public void testToString() {
160-
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage("content", "reasoning");
171+
DeepSeekAssistantMessage message = new DeepSeekAssistantMessage.Builder().content("content")
172+
.reasoningContent("reasoning")
173+
.build();
161174
message.setPrefix(true);
162175

163176
assertThatNoException().isThrownBy(message::toString);

models/spring-ai-deepseek/src/test/java/org/springframework/ai/deepseek/chat/DeepSeekChatModelIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,9 @@ void prefixCompletionTest() {
224224
```
225225
""";
226226
UserMessage userMessage = new UserMessage(userMessageContent);
227-
Message assistantMessage = new DeepSeekAssistantMessage("{\"code\":200,\"result\":{\"total\":1,\"data\":[1");
227+
Message assistantMessage = AssistantMessage.builder()
228+
.content("{\"code\":200,\"result\":{\"total\":1,\"data\":[1")
229+
.build();
228230
Prompt prompt = new Prompt(List.of(userMessage, assistantMessage));
229231
ChatResponse response = this.chatModel.call(prompt);
230232
assertThat(response.getResult().getOutput().getText().equals(",2,3]}}"));

models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatModel.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,6 @@ public class MistralAiChatModel implements ChatModel {
127127
*/
128128
private ChatModelObservationConvention observationConvention = DEFAULT_OBSERVATION_CONVENTION;
129129

130-
@Deprecated
131-
public MistralAiChatModel(MistralAiApi mistralAiApi, MistralAiChatOptions defaultOptions,
132-
ToolCallingManager toolCallingManager, RetryTemplate retryTemplate,
133-
ObservationRegistry observationRegistry) {
134-
this(mistralAiApi, defaultOptions, toolCallingManager, retryTemplate, observationRegistry,
135-
new DefaultToolExecutionEligibilityPredicate());
136-
}
137-
138130
public MistralAiChatModel(MistralAiApi mistralAiApi, MistralAiChatOptions defaultOptions,
139131
ToolCallingManager toolCallingManager, RetryTemplate retryTemplate, ObservationRegistry observationRegistry,
140132
ToolExecutionEligibilityPredicate toolExecutionEligibilityPredicate) {

models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingModel.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -85,29 +85,6 @@ public class MistralAiEmbeddingModel extends AbstractEmbeddingModel {
8585
*/
8686
private EmbeddingModelObservationConvention observationConvention = DEFAULT_OBSERVATION_CONVENTION;
8787

88-
@Deprecated
89-
public MistralAiEmbeddingModel(MistralAiApi mistralAiApi) {
90-
this(mistralAiApi, MetadataMode.EMBED);
91-
}
92-
93-
@Deprecated
94-
public MistralAiEmbeddingModel(MistralAiApi mistralAiApi, MetadataMode metadataMode) {
95-
this(mistralAiApi, metadataMode,
96-
MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build(),
97-
RetryUtils.DEFAULT_RETRY_TEMPLATE);
98-
}
99-
100-
@Deprecated
101-
public MistralAiEmbeddingModel(MistralAiApi mistralAiApi, MistralAiEmbeddingOptions options) {
102-
this(mistralAiApi, MetadataMode.EMBED, options, RetryUtils.DEFAULT_RETRY_TEMPLATE);
103-
}
104-
105-
@Deprecated
106-
public MistralAiEmbeddingModel(MistralAiApi mistralAiApi, MetadataMode metadataMode,
107-
MistralAiEmbeddingOptions options, RetryTemplate retryTemplate) {
108-
this(mistralAiApi, metadataMode, options, retryTemplate, ObservationRegistry.NOOP);
109-
}
110-
11188
public MistralAiEmbeddingModel(MistralAiApi mistralAiApi, MetadataMode metadataMode,
11289
MistralAiEmbeddingOptions options, RetryTemplate retryTemplate, ObservationRegistry observationRegistry) {
11390
Assert.notNull(mistralAiApi, "mistralAiApi must not be null");

models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -83,38 +83,6 @@ public static Builder builder() {
8383

8484
private final MistralAiStreamFunctionCallingHelper chunkMerger = new MistralAiStreamFunctionCallingHelper();
8585

86-
/**
87-
* Create a new client api with DEFAULT_BASE_URL
88-
* @param apiKey Mistral api Key.
89-
*/
90-
@Deprecated
91-
public MistralAiApi(String apiKey) {
92-
this(DEFAULT_BASE_URL, apiKey);
93-
}
94-
95-
/**
96-
* Create a new client api.
97-
* @param baseUrl api base URL.
98-
* @param apiKey Mistral api Key.
99-
*/
100-
@Deprecated
101-
public MistralAiApi(String baseUrl, String apiKey) {
102-
this(baseUrl, apiKey, RestClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER);
103-
}
104-
105-
/**
106-
* Create a new client api.
107-
* @param baseUrl api base URL.
108-
* @param apiKey Mistral api Key.
109-
* @param restClientBuilder RestClient builder.
110-
* @param responseErrorHandler Response error handler.
111-
*/
112-
@Deprecated
113-
public MistralAiApi(String baseUrl, String apiKey, RestClient.Builder restClientBuilder,
114-
ResponseErrorHandler responseErrorHandler) {
115-
this(baseUrl, apiKey, restClientBuilder, WebClient.builder(), responseErrorHandler);
116-
}
117-
11886
/**
11987
* Create a new client api.
12088
* @param baseUrl api base URL.

0 commit comments

Comments
 (0)