Skip to content

Commit b31b7c2

Browse files
committed
Builders across Mistral project. Deprecated overloaded constructors. Fix Formatter "onn" typos
Signed-off-by: Jason Smith <[email protected]>
1 parent 1e84881 commit b31b7c2

File tree

26 files changed

+373
-265
lines changed

26 files changed

+373
-265
lines changed

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/java/org/springframework/ai/model/azure/openai/autoconfigure/tool/FunctionCallWithFunctionBeanIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
package org.springframework.ai.model.azure.openai.autoconfigure.tool;
1818

19+
import static org.assertj.core.api.Assertions.assertThat;
20+
1921
import java.util.List;
2022
import java.util.function.Function;
21-
2223
import org.junit.jupiter.api.Test;
2324
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2425
import org.slf4j.Logger;
2526
import org.slf4j.LoggerFactory;
26-
2727
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
2828
import org.springframework.ai.azure.openai.AzureOpenAiChatOptions;
2929
import org.springframework.ai.chat.messages.UserMessage;
@@ -38,8 +38,6 @@
3838
import org.springframework.context.annotation.Configuration;
3939
import org.springframework.context.annotation.Description;
4040

41-
import static org.assertj.core.api.Assertions.assertThat;
42-
4341
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_API_KEY", matches = ".+")
4442
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_ENDPOINT", matches = ".+")
4543
class FunctionCallWithFunctionBeanIT {
@@ -50,7 +48,7 @@ class FunctionCallWithFunctionBeanIT {
5048
// @formatter:off
5149
"spring.ai.azure.openai.api-key=" + System.getenv("AZURE_OPENAI_API_KEY"),
5250
"spring.ai.azure.openai.endpoint=" + System.getenv("AZURE_OPENAI_ENDPOINT"))
53-
// @formatter:onn
51+
// @formatter:on
5452
.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
5553
.withUserConfiguration(Config.class);
5654

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/java/org/springframework/ai/model/azure/openai/autoconfigure/tool/FunctionCallWithFunctionWrapperIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
package org.springframework.ai.model.azure.openai.autoconfigure.tool;
1818

19-
import java.util.List;
19+
import static org.assertj.core.api.Assertions.assertThat;
2020

21+
import java.util.List;
2122
import org.junit.jupiter.api.Test;
2223
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2324
import org.slf4j.Logger;
2425
import org.slf4j.LoggerFactory;
25-
2626
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
2727
import org.springframework.ai.azure.openai.AzureOpenAiChatOptions;
2828
import org.springframework.ai.chat.messages.UserMessage;
@@ -36,8 +36,6 @@
3636
import org.springframework.context.annotation.Bean;
3737
import org.springframework.context.annotation.Configuration;
3838

39-
import static org.assertj.core.api.Assertions.assertThat;
40-
4139
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_API_KEY", matches = ".+")
4240
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_ENDPOINT", matches = ".+")
4341
public class FunctionCallWithFunctionWrapperIT {
@@ -48,7 +46,7 @@ public class FunctionCallWithFunctionWrapperIT {
4846
// @formatter:off
4947
"spring.ai.azure.openai.api-key=" + System.getenv("AZURE_OPENAI_API_KEY"),
5048
"spring.ai.azure.openai.endpoint=" + System.getenv("AZURE_OPENAI_ENDPOINT"))
51-
// @formatter:onn
49+
// @formatter:on
5250
.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
5351
.withUserConfiguration(Config.class);
5452

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/java/org/springframework/ai/model/azure/openai/autoconfigure/tool/FunctionCallWithPromptFunctionIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
package org.springframework.ai.model.azure.openai.autoconfigure.tool;
1818

19-
import java.util.List;
19+
import static org.assertj.core.api.Assertions.assertThat;
2020

21+
import java.util.List;
2122
import org.junit.jupiter.api.Test;
2223
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2324
import org.slf4j.Logger;
2425
import org.slf4j.LoggerFactory;
25-
2626
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
2727
import org.springframework.ai.azure.openai.AzureOpenAiChatOptions;
2828
import org.springframework.ai.chat.messages.UserMessage;
@@ -33,8 +33,6 @@
3333
import org.springframework.boot.autoconfigure.AutoConfigurations;
3434
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3535

36-
import static org.assertj.core.api.Assertions.assertThat;
37-
3836
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_API_KEY", matches = ".+")
3937
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_ENDPOINT", matches = ".+")
4038
public class FunctionCallWithPromptFunctionIT {
@@ -45,7 +43,7 @@ public class FunctionCallWithPromptFunctionIT {
4543
// @formatter:off
4644
"spring.ai.azure.openai.api-key=" + System.getenv("AZURE_OPENAI_API_KEY"),
4745
"spring.ai.azure.openai.endpoint=" + System.getenv("AZURE_OPENAI_ENDPOINT"))
48-
// @formatter:onn
46+
// @formatter:on
4947
.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class));
5048

5149
@Test

auto-configurations/models/spring-ai-autoconfigure-model-mistral-ai/src/main/java/org/springframework/ai/model/mistralai/autoconfigure/MistralAiChatAutoConfiguration.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.ai.model.mistralai.autoconfigure;
1818

1919
import io.micrometer.observation.ObservationRegistry;
20-
2120
import org.springframework.ai.chat.observation.ChatModelObservationConvention;
2221
import org.springframework.ai.mistralai.MistralAiChatModel;
2322
import org.springframework.ai.mistralai.api.MistralAiApi;
@@ -104,8 +103,13 @@ private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String bas
104103
Assert.hasText(resolvedApiKey, "Mistral API key must be set");
105104
Assert.hasText(resoledBaseUrl, "Mistral base URL must be set");
106105

107-
return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder, webClientBuilder,
108-
responseErrorHandler);
106+
return MistralAiApi.builder()
107+
.baseUrl(resoledBaseUrl)
108+
.apiKey(resolvedApiKey)
109+
.restClientBuilder(restClientBuilder)
110+
.webClientBuilder(webClientBuilder)
111+
.responseErrorHandler(responseErrorHandler)
112+
.build();
109113
}
110114

111115
}

auto-configurations/models/spring-ai-autoconfigure-model-mistral-ai/src/main/java/org/springframework/ai/model/mistralai/autoconfigure/MistralAiEmbeddingAutoConfiguration.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.ai.model.mistralai.autoconfigure;
1818

1919
import io.micrometer.observation.ObservationRegistry;
20-
2120
import org.springframework.ai.embedding.observation.EmbeddingModelObservationConvention;
2221
import org.springframework.ai.mistralai.MistralAiEmbeddingModel;
2322
import org.springframework.ai.mistralai.api.MistralAiApi;
@@ -68,9 +67,13 @@ public MistralAiEmbeddingModel mistralAiEmbeddingModel(MistralAiCommonProperties
6867
embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(),
6968
restClientBuilderProvider.getIfAvailable(RestClient::builder), responseErrorHandler);
7069

71-
var embeddingModel = new MistralAiEmbeddingModel(mistralAiApi, embeddingProperties.getMetadataMode(),
72-
embeddingProperties.getOptions(), retryTemplate,
73-
observationRegistry.getIfUnique(() -> ObservationRegistry.NOOP));
70+
var embeddingModel = MistralAiEmbeddingModel.builder()
71+
.mistralAiApi(mistralAiApi)
72+
.metadataMode(embeddingProperties.getMetadataMode())
73+
.options(embeddingProperties.getOptions())
74+
.retryTemplate(retryTemplate)
75+
.observationRegistry(observationRegistry.getIfUnique(() -> ObservationRegistry.NOOP))
76+
.build();
7477

7578
observationConvention.ifAvailable(embeddingModel::setObservationConvention);
7679

@@ -86,7 +89,12 @@ private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String bas
8689
Assert.hasText(resolvedApiKey, "Mistral API key must be set");
8790
Assert.hasText(resoledBaseUrl, "Mistral base URL must be set");
8891

89-
return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder, responseErrorHandler);
92+
return MistralAiApi.builder()
93+
.baseUrl(resoledBaseUrl)
94+
.apiKey(apiKey)
95+
.restClientBuilder(restClientBuilder)
96+
.responseErrorHandler(responseErrorHandler)
97+
.build();
9098
}
9199

92100
}

auto-configurations/models/spring-ai-autoconfigure-model-mistral-ai/src/main/java/org/springframework/ai/model/mistralai/autoconfigure/MistralAiModerationAutoConfiguration.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,18 @@ public MistralAiModerationModel mistralAiModerationModel(MistralAiCommonProperti
6868
Assert.hasText(resolvedApiKey, "Mistral API key must be set");
6969
Assert.hasText(resoledBaseUrl, "Mistral base URL must be set");
7070

71-
var mistralAiModerationAi = new MistralAiModerationApi(resoledBaseUrl, resolvedApiKey,
72-
restClientBuilderProvider.getIfAvailable(RestClient::builder), responseErrorHandler);
71+
var mistralAiModerationApi = MistralAiModerationApi.builder()
72+
.baseUrl(resoledBaseUrl)
73+
.apiKey(resolvedApiKey)
74+
.restClientBuilder(restClientBuilderProvider.getIfAvailable(RestClient::builder))
75+
.responseErrorHandler(responseErrorHandler)
76+
.build();
7377

74-
return new MistralAiModerationModel(mistralAiModerationAi, retryTemplate, moderationProperties.getOptions());
78+
return MistralAiModerationModel.builder()
79+
.mistralAiModerationApi(mistralAiModerationApi)
80+
.retryTemplate(retryTemplate)
81+
.options(moderationProperties.getOptions())
82+
.build();
7583
}
7684

7785
}

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

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,16 @@
1616

1717
package org.springframework.ai.mistralai;
1818

19+
import io.micrometer.observation.Observation;
20+
import io.micrometer.observation.ObservationRegistry;
21+
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
1922
import java.util.ArrayList;
2023
import java.util.Base64;
2124
import java.util.List;
2225
import java.util.Map;
2326
import java.util.concurrent.ConcurrentHashMap;
24-
25-
import io.micrometer.observation.Observation;
26-
import io.micrometer.observation.ObservationRegistry;
27-
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
2827
import org.slf4j.Logger;
2928
import org.slf4j.LoggerFactory;
30-
import reactor.core.publisher.Flux;
31-
import reactor.core.publisher.Mono;
32-
import reactor.core.scheduler.Schedulers;
33-
3429
import org.springframework.ai.chat.messages.AssistantMessage;
3530
import org.springframework.ai.chat.messages.SystemMessage;
3631
import org.springframework.ai.chat.messages.ToolResponseMessage;
@@ -72,6 +67,9 @@
7267
import org.springframework.util.Assert;
7368
import org.springframework.util.CollectionUtils;
7469
import org.springframework.util.MimeType;
70+
import reactor.core.publisher.Flux;
71+
import reactor.core.publisher.Mono;
72+
import reactor.core.scheduler.Schedulers;
7573

7674
/**
7775
* Represents a Mistral AI Chat Model.
@@ -83,6 +81,7 @@
8381
* @author luocongqiu
8482
* @author Ilayaperumal Gopinathan
8583
* @author Alexandros Pappas
84+
* @author jasonparallel
8685
* @since 1.0.0
8786
*/
8887
public class MistralAiChatModel implements ChatModel {
@@ -123,6 +122,7 @@ public class MistralAiChatModel implements ChatModel {
123122
*/
124123
private ChatModelObservationConvention observationConvention = DEFAULT_OBSERVATION_CONVENTION;
125124

125+
@Deprecated
126126
public MistralAiChatModel(MistralAiApi mistralAiApi, MistralAiChatOptions defaultOptions,
127127
ToolCallingManager toolCallingManager, RetryTemplate retryTemplate,
128128
ObservationRegistry observationRegistry) {
@@ -538,7 +538,7 @@ public static final class Builder {
538538
.model(MistralAiApi.ChatModel.SMALL.getValue())
539539
.build();
540540

541-
private ToolCallingManager toolCallingManager;
541+
private ToolCallingManager toolCallingManager = DEFAULT_TOOL_CALLING_MANAGER;
542542

543543
private ToolExecutionEligibilityPredicate toolExecutionEligibilityPredicate = new DefaultToolExecutionEligibilityPredicate();
544544

@@ -581,11 +581,7 @@ public Builder observationRegistry(ObservationRegistry observationRegistry) {
581581
}
582582

583583
public MistralAiChatModel build() {
584-
if (this.toolCallingManager != null) {
585-
return new MistralAiChatModel(this.mistralAiApi, this.defaultOptions, this.toolCallingManager,
586-
this.retryTemplate, this.observationRegistry, this.toolExecutionEligibilityPredicate);
587-
}
588-
return new MistralAiChatModel(this.mistralAiApi, this.defaultOptions, DEFAULT_TOOL_CALLING_MANAGER,
584+
return new MistralAiChatModel(this.mistralAiApi, this.defaultOptions, this.toolCallingManager,
589585
this.retryTemplate, this.observationRegistry, this.toolExecutionEligibilityPredicate);
590586
}
591587

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.ai.mistralai;
1818

19+
import com.fasterxml.jackson.annotation.JsonIgnore;
20+
import com.fasterxml.jackson.annotation.JsonInclude;
21+
import com.fasterxml.jackson.annotation.JsonProperty;
1922
import java.util.ArrayList;
2023
import java.util.Arrays;
2124
import java.util.HashMap;
@@ -24,11 +27,6 @@
2427
import java.util.Map;
2528
import java.util.Objects;
2629
import java.util.Set;
27-
28-
import com.fasterxml.jackson.annotation.JsonIgnore;
29-
import com.fasterxml.jackson.annotation.JsonInclude;
30-
import com.fasterxml.jackson.annotation.JsonProperty;
31-
3230
import org.springframework.ai.mistralai.api.MistralAiApi;
3331
import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest.ResponseFormat;
3432
import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest.ToolChoice;
@@ -45,6 +43,7 @@
4543
* @author Christian Tzolov
4644
* @author Thomas Vitale
4745
* @author Alexandros Pappas
46+
* @author jasonparallel
4847
* @since 0.8.1
4948
*/
5049
@JsonInclude(JsonInclude.Include.NON_NULL)
@@ -403,7 +402,7 @@ public boolean equals(Object obj) {
403402
&& Objects.equals(this.toolContext, other.toolContext);
404403
}
405404

406-
public static class Builder {
405+
public static final class Builder {
407406

408407
private final MistralAiChatOptions options = new MistralAiChatOptions();
409408

0 commit comments

Comments
 (0)