Skip to content

Commit 8883689

Browse files
committed
Polish MistralAi ITs
- Use common base class to serve the static methods for the ITs to import autoconfigurations Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
1 parent ad69fd7 commit 8883689

File tree

9 files changed

+140
-92
lines changed

9 files changed

+140
-92
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright 2025-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.ai.model.mistralai.autoconfigure;
18+
19+
import java.util.Arrays;
20+
import java.util.stream.Stream;
21+
22+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
23+
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
24+
import org.springframework.boot.autoconfigure.AutoConfigurations;
25+
26+
/**
27+
* Base class to provide consistent AutoConfigurations for MistralAI integration tests.
28+
*/
29+
public abstract class BaseMistralAiIT {
30+
31+
/**
32+
* AutoConfigurations needed for MistralAI Chat model.
33+
*/
34+
public static AutoConfigurations mistralAiChatAutoConfig(Class<?>... additional) {
35+
Class<?>[] dependencies = { SpringAiRetryAutoConfiguration.class, ToolCallingAutoConfiguration.class,
36+
MistralAiChatAutoConfiguration.class };
37+
Class<?>[] all = Stream.concat(Arrays.stream(dependencies), Arrays.stream(additional)).toArray(Class<?>[]::new);
38+
return AutoConfigurations.of(all);
39+
}
40+
41+
/**
42+
* AutoConfigurations needed for MistralAI Text Embedding model.
43+
*/
44+
public static AutoConfigurations mistralAiEmbeddingAutoConfig(Class<?>... additional) {
45+
Class<?>[] dependencies = { SpringAiRetryAutoConfiguration.class, MistralAiEmbeddingAutoConfiguration.class };
46+
Class<?>[] all = Stream.concat(Arrays.stream(dependencies), Arrays.stream(additional)).toArray(Class<?>[]::new);
47+
return AutoConfigurations.of(all);
48+
}
49+
50+
/**
51+
* AutoConfigurations needed for MistralAI OCR API.
52+
*/
53+
public static AutoConfigurations mistralAiOCRAutoConfig(Class<?>... additional) {
54+
Class<?>[] dependencies = { SpringAiRetryAutoConfiguration.class, MistralAiOcrAutoConfiguration.class };
55+
Class<?>[] all = Stream.concat(Arrays.stream(dependencies), Arrays.stream(additional)).toArray(Class<?>[]::new);
56+
return AutoConfigurations.of(all);
57+
}
58+
59+
/**
60+
* AutoConfigurations needed for MistralAI Moderation API.
61+
*/
62+
public static AutoConfigurations mistralAiModerationAutoConfig(Class<?>... additional) {
63+
Class<?>[] dependencies = { SpringAiRetryAutoConfiguration.class, MistralAiModerationAutoConfiguration.class };
64+
Class<?>[] all = Stream.concat(Arrays.stream(dependencies), Arrays.stream(additional)).toArray(Class<?>[]::new);
65+
return AutoConfigurations.of(all);
66+
}
67+
68+
}

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

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.ai.embedding.EmbeddingResponse;
3232
import org.springframework.ai.mistralai.MistralAiChatModel;
3333
import org.springframework.ai.mistralai.MistralAiEmbeddingModel;
34-
import org.springframework.boot.autoconfigure.AutoConfigurations;
3534
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3635

3736
import static org.assertj.core.api.Assertions.assertThat;
@@ -51,48 +50,45 @@ public class MistralAiAutoConfigurationIT {
5150

5251
@Test
5352
void generate() {
54-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class))
55-
.run(context -> {
56-
MistralAiChatModel chatModel = context.getBean(MistralAiChatModel.class);
57-
String response = chatModel.call("Hello");
58-
assertThat(response).isNotEmpty();
59-
logger.info("Response: " + response);
60-
});
53+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig()).run(context -> {
54+
MistralAiChatModel chatModel = context.getBean(MistralAiChatModel.class);
55+
String response = chatModel.call("Hello");
56+
assertThat(response).isNotEmpty();
57+
logger.info("Response: " + response);
58+
});
6159
}
6260

6361
@Test
6462
void generateStreaming() {
65-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class))
66-
.run(context -> {
67-
MistralAiChatModel chatModel = context.getBean(MistralAiChatModel.class);
68-
Flux<ChatResponse> responseFlux = chatModel.stream(new Prompt(new UserMessage("Hello")));
69-
String response = responseFlux.collectList()
70-
.block()
71-
.stream()
72-
.map(chatResponse -> chatResponse.getResults().get(0).getOutput().getText())
73-
.collect(Collectors.joining());
63+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig()).run(context -> {
64+
MistralAiChatModel chatModel = context.getBean(MistralAiChatModel.class);
65+
Flux<ChatResponse> responseFlux = chatModel.stream(new Prompt(new UserMessage("Hello")));
66+
String response = responseFlux.collectList()
67+
.block()
68+
.stream()
69+
.map(chatResponse -> chatResponse.getResults().get(0).getOutput().getText())
70+
.collect(Collectors.joining());
7471

75-
assertThat(response).isNotEmpty();
76-
logger.info("Response: " + response);
77-
});
72+
assertThat(response).isNotEmpty();
73+
logger.info("Response: " + response);
74+
});
7875
}
7976

8077
@Test
8178
void embedding() {
82-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiEmbeddingAutoConfiguration.class))
83-
.run(context -> {
84-
MistralAiEmbeddingModel embeddingModel = context.getBean(MistralAiEmbeddingModel.class);
79+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig()).run(context -> {
80+
MistralAiEmbeddingModel embeddingModel = context.getBean(MistralAiEmbeddingModel.class);
8581

86-
EmbeddingResponse embeddingResponse = embeddingModel
87-
.embedForResponse(List.of("Hello World", "World is big and salvation is near"));
88-
assertThat(embeddingResponse.getResults()).hasSize(2);
89-
assertThat(embeddingResponse.getResults().get(0).getOutput()).isNotEmpty();
90-
assertThat(embeddingResponse.getResults().get(0).getIndex()).isEqualTo(0);
91-
assertThat(embeddingResponse.getResults().get(1).getOutput()).isNotEmpty();
92-
assertThat(embeddingResponse.getResults().get(1).getIndex()).isEqualTo(1);
82+
EmbeddingResponse embeddingResponse = embeddingModel
83+
.embedForResponse(List.of("Hello World", "World is big and salvation is near"));
84+
assertThat(embeddingResponse.getResults()).hasSize(2);
85+
assertThat(embeddingResponse.getResults().get(0).getOutput()).isNotEmpty();
86+
assertThat(embeddingResponse.getResults().get(0).getIndex()).isEqualTo(0);
87+
assertThat(embeddingResponse.getResults().get(1).getOutput()).isNotEmpty();
88+
assertThat(embeddingResponse.getResults().get(1).getIndex()).isEqualTo(1);
9389

94-
assertThat(embeddingModel.dimensions()).isEqualTo(1024);
95-
});
90+
assertThat(embeddingModel.dimensions()).isEqualTo(1024);
91+
});
9692
}
9793

9894
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2323

2424
import org.springframework.ai.mistralai.ocr.MistralOcrApi;
25-
import org.springframework.boot.autoconfigure.AutoConfigurations;
2625
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2726
import org.springframework.http.ResponseEntity;
2827

@@ -47,7 +46,7 @@ class MistralAiOcrAutoConfigurationTests {
4746

4847
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4948
.withPropertyValues("spring.ai.mistralai.api-key=" + System.getenv(ENV_VAR_NAME))
50-
.withConfiguration(AutoConfigurations.of(MistralAiOcrAutoConfiguration.class));
49+
.withConfiguration(BaseMistralAiIT.mistralAiOCRAutoConfig());
5150

5251
@Test
5352
void ocrExtractionWithPublicUrl() {

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

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
import org.junit.jupiter.api.Test;
2020

2121
import org.springframework.ai.mistralai.api.MistralAiApi;
22-
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
23-
import org.springframework.boot.autoconfigure.AutoConfigurations;
24-
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
2522
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2623

2724
import static org.assertj.core.api.Assertions.assertThat;
@@ -37,8 +34,7 @@ public void embeddingProperties() {
3734
new ApplicationContextRunner()
3835
.withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123",
3936
"spring.ai.mistralai.embedding.options.model=MODEL_XYZ")
40-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
41-
RestClientAutoConfiguration.class, MistralAiEmbeddingAutoConfiguration.class))
37+
.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
4238
.run(context -> {
4339
var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class);
4440
var connectionProperties = context.getBean(MistralAiCommonProperties.class);
@@ -86,8 +82,7 @@ public void chatOptionsTest() {
8682

8783
"spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.base-url=TEST_BASE_URL2",
8884
"spring.ai.mistralai.embedding.api-key=456", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ")
89-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
90-
RestClientAutoConfiguration.class, MistralAiChatAutoConfiguration.class))
85+
.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig())
9186
.run(context -> {
9287

9388
var chatProperties = context.getBean(MistralAiChatProperties.class);
@@ -107,8 +102,7 @@ public void embeddingOverrideConnectionProperties() {
107102
new ApplicationContextRunner().withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL",
108103
"spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.base-url=TEST_BASE_URL2",
109104
"spring.ai.mistralai.embedding.api-key=456", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ")
110-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
111-
RestClientAutoConfiguration.class, MistralAiEmbeddingAutoConfiguration.class))
105+
.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
112106
.run(context -> {
113107
var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class);
114108
var connectionProperties = context.getBean(MistralAiCommonProperties.class);
@@ -130,8 +124,7 @@ public void embeddingOptionsTest() {
130124
.withPropertyValues("spring.ai.mistralai.api-key=API_KEY", "spring.ai.mistralai.base-url=TEST_BASE_URL",
131125
"spring.ai.mistralai.embedding.options.model=MODEL_XYZ",
132126
"spring.ai.mistralai.embedding.options.encodingFormat=MyEncodingFormat")
133-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
134-
RestClientAutoConfiguration.class, MistralAiEmbeddingAutoConfiguration.class))
127+
.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
135128
.run(context -> {
136129
var connectionProperties = context.getBean(MistralAiCommonProperties.class);
137130
var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class);
@@ -149,8 +142,7 @@ public void moderationOptionsTest() {
149142
new ApplicationContextRunner()
150143
.withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123",
151144
"spring.ai.mistralai.moderation.options.model=MODERATION_MODEL")
152-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
153-
RestClientAutoConfiguration.class, MistralAiModerationAutoConfiguration.class))
145+
.withConfiguration(BaseMistralAiIT.mistralAiModerationAutoConfig())
154146
.run(context -> {
155147
var moderationProperties = context.getBean(MistralAiModerationProperties.class);
156148
assertThat(moderationProperties.getOptions().getModel()).isEqualTo("MODERATION_MODEL");

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

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.springframework.ai.mistralai.MistralAiChatModel;
2222
import org.springframework.ai.mistralai.MistralAiEmbeddingModel;
2323
import org.springframework.ai.mistralai.moderation.MistralAiModerationModel;
24-
import org.springframework.boot.autoconfigure.AutoConfigurations;
2524
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2625

2726
import static org.assertj.core.api.Assertions.assertThat;
@@ -39,26 +38,23 @@ public class MistralModelConfigurationTests {
3938

4039
@Test
4140
void chatModelActivation() {
42-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class))
43-
.run(context -> {
44-
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isNotEmpty();
45-
assertThat(context.getBeansOfType(MistralAiChatModel.class)).isNotEmpty();
46-
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isEmpty();
47-
assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isEmpty();
48-
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isEmpty();
49-
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isEmpty();
50-
});
51-
52-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class))
41+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig()).run(context -> {
42+
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isNotEmpty();
43+
assertThat(context.getBeansOfType(MistralAiChatModel.class)).isNotEmpty();
44+
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isEmpty();
45+
assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isEmpty();
46+
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isEmpty();
47+
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isEmpty();
48+
});
49+
50+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig())
5351
.withPropertyValues("spring.ai.model.chat=none", "spring.ai.model.embedding=none")
5452
.run(context -> {
5553
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isEmpty();
5654
assertThat(context.getBeansOfType(MistralAiChatModel.class)).isEmpty();
5755
});
5856

59-
this.contextRunner
60-
.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class,
61-
MistralAiEmbeddingAutoConfiguration.class))
57+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig())
6258
.withPropertyValues("spring.ai.model.chat=mistral", "spring.ai.model.embedding=none")
6359
.run(context -> {
6460
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isNotEmpty();
@@ -72,17 +68,17 @@ void chatModelActivation() {
7268

7369
@Test
7470
void embeddingModelActivation() {
75-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiEmbeddingAutoConfiguration.class))
71+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
7672
.run(context -> assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isNotEmpty());
7773

78-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiEmbeddingAutoConfiguration.class))
74+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
7975
.withPropertyValues("spring.ai.model.embedding=none")
8076
.run(context -> {
8177
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isEmpty();
8278
assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isEmpty();
8379
});
8480

85-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiEmbeddingAutoConfiguration.class))
81+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiEmbeddingAutoConfig())
8682
.withPropertyValues("spring.ai.model.embedding=mistral")
8783
.run(context -> {
8884
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isNotEmpty();
@@ -92,33 +88,30 @@ void embeddingModelActivation() {
9288

9389
@Test
9490
void moderationModelActivation() {
95-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiModerationAutoConfiguration.class))
96-
.run(context -> {
97-
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isNotEmpty();
98-
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isNotEmpty();
99-
assertThat(context.getBeansOfType(MistralAiChatModel.class)).isEmpty();
100-
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isEmpty();
101-
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isEmpty();
102-
assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isEmpty();
103-
});
104-
105-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiModerationAutoConfiguration.class))
91+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiModerationAutoConfig()).run(context -> {
92+
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isNotEmpty();
93+
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isNotEmpty();
94+
assertThat(context.getBeansOfType(MistralAiChatModel.class)).isEmpty();
95+
assertThat(context.getBeansOfType(MistralAiChatProperties.class)).isEmpty();
96+
assertThat(context.getBeansOfType(MistralAiEmbeddingProperties.class)).isEmpty();
97+
assertThat(context.getBeansOfType(MistralAiEmbeddingModel.class)).isEmpty();
98+
});
99+
100+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiModerationAutoConfig())
106101
.withPropertyValues("spring.ai.model.moderation=none")
107102
.run(context -> {
108103
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isEmpty();
109104
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isEmpty();
110105
});
111106

112-
this.contextRunner.withConfiguration(AutoConfigurations.of(MistralAiModerationAutoConfiguration.class))
107+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiModerationAutoConfig())
113108
.withPropertyValues("spring.ai.model.moderation=mistral")
114109
.run(context -> {
115110
assertThat(context.getBeansOfType(MistralAiModerationProperties.class)).isNotEmpty();
116111
assertThat(context.getBeansOfType(MistralAiModerationModel.class)).isNotEmpty();
117112
});
118113

119-
this.contextRunner
120-
.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class,
121-
MistralAiEmbeddingAutoConfiguration.class, MistralAiModerationAutoConfiguration.class))
114+
this.contextRunner.withConfiguration(BaseMistralAiIT.mistralAiModerationAutoConfig())
122115
.withPropertyValues("spring.ai.model.chat=none", "spring.ai.model.embedding=none",
123116
"spring.ai.model.moderation=mistral")
124117
.run(context -> {

auto-configurations/models/spring-ai-autoconfigure-model-mistral-ai/src/test/java/org/springframework/ai/model/mistralai/autoconfigure/tool/PaymentStatusBeanIT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
import org.springframework.ai.mistralai.MistralAiChatModel;
3333
import org.springframework.ai.mistralai.MistralAiChatOptions;
3434
import org.springframework.ai.mistralai.api.MistralAiApi;
35-
import org.springframework.ai.model.mistralai.autoconfigure.MistralAiChatAutoConfiguration;
36-
import org.springframework.boot.autoconfigure.AutoConfigurations;
35+
import org.springframework.ai.model.mistralai.autoconfigure.BaseMistralAiIT;
3736
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3837
import org.springframework.context.annotation.Bean;
3938
import org.springframework.context.annotation.Configuration;
@@ -53,7 +52,7 @@ class PaymentStatusBeanIT {
5352

5453
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5554
.withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY"))
56-
.withConfiguration(AutoConfigurations.of(MistralAiChatAutoConfiguration.class))
55+
.withConfiguration(BaseMistralAiIT.mistralAiChatAutoConfig())
5756
.withUserConfiguration(Config.class);
5857

5958
@Test

0 commit comments

Comments
 (0)