Skip to content

Commit 244cff9

Browse files
committed
Fix ZhiPuAI auto-configuration
Signed-off-by: Pawel Potaczala <[email protected]>
1 parent 01082b8 commit 244cff9

File tree

7 files changed

+104
-84
lines changed

7 files changed

+104
-84
lines changed

auto-configurations/models/spring-ai-autoconfigure-model-zhipuai/src/main/java/org/springframework/ai/model/zhipuai/autoconfigure/ZhiPuAiChatAutoConfiguration.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.ai.zhipuai.api.ZhiPuAiApi;
3232
import org.springframework.beans.factory.ObjectProvider;
3333
import org.springframework.boot.autoconfigure.AutoConfiguration;
34-
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
3534
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3635
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3736
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -57,8 +56,6 @@
5756
@ConditionalOnProperty(name = SpringAIModelProperties.CHAT_MODEL, havingValue = SpringAIModels.ZHIPUAI,
5857
matchIfMissing = true)
5958
@EnableConfigurationProperties({ ZhiPuAiConnectionProperties.class, ZhiPuAiChatProperties.class })
60-
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,
61-
ToolCallingAutoConfiguration.class })
6259
public class ZhiPuAiChatAutoConfiguration {
6360

6461
@Bean

auto-configurations/models/spring-ai-autoconfigure-model-zhipuai/src/test/java/org/springframework/ai/model/zhipuai/autoconfigure/ZhiPuAiAutoConfigurationIT.java

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,9 @@
3232
import org.springframework.ai.embedding.EmbeddingResponse;
3333
import org.springframework.ai.image.ImagePrompt;
3434
import org.springframework.ai.image.ImageResponse;
35-
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
3635
import org.springframework.ai.zhipuai.ZhiPuAiChatModel;
3736
import org.springframework.ai.zhipuai.ZhiPuAiEmbeddingModel;
3837
import org.springframework.ai.zhipuai.ZhiPuAiImageModel;
39-
import org.springframework.boot.autoconfigure.AutoConfigurations;
40-
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
4138
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
4239

4340
import static org.assertj.core.api.Assertions.assertThat;
@@ -51,40 +48,40 @@ public class ZhiPuAiAutoConfigurationIT {
5148
private static final Log logger = LogFactory.getLog(ZhiPuAiAutoConfigurationIT.class);
5249

5350
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
54-
.withPropertyValues("spring.ai.zhipuai.apiKey=" + System.getenv("ZHIPU_AI_API_KEY"))
55-
.withConfiguration(
56-
AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class));
51+
.withPropertyValues("spring.ai.zhipuai.apiKey=" + System.getenv("ZHIPU_AI_API_KEY"));
5752

5853
@Test
5954
void generate() {
60-
this.contextRunner.withConfiguration(AutoConfigurations.of(ZhiPuAiChatAutoConfiguration.class)).run(context -> {
61-
ZhiPuAiChatModel chatModel = context.getBean(ZhiPuAiChatModel.class);
62-
ChatResponse response = chatModel.call(new Prompt("Hello", ChatOptions.builder().build()));
63-
assertThat(response.getResult().getOutput().getText()).isNotEmpty();
64-
logger.info("Response: " + response);
65-
});
55+
this.contextRunner.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiChatAutoConfiguration.class))
56+
.run(context -> {
57+
ZhiPuAiChatModel chatModel = context.getBean(ZhiPuAiChatModel.class);
58+
ChatResponse response = chatModel.call(new Prompt("Hello", ChatOptions.builder().build()));
59+
assertThat(response.getResult().getOutput().getText()).isNotEmpty();
60+
logger.info("Response: " + response);
61+
});
6662
}
6763

6864
@Test
6965
void generateStreaming() {
70-
this.contextRunner.withConfiguration(AutoConfigurations.of(ZhiPuAiChatAutoConfiguration.class)).run(context -> {
71-
ZhiPuAiChatModel chatModel = context.getBean(ZhiPuAiChatModel.class);
72-
Flux<ChatResponse> responseFlux = chatModel
73-
.stream(new Prompt(new UserMessage("Hello"), ChatOptions.builder().build()));
74-
String response = responseFlux.collectList()
75-
.block()
76-
.stream()
77-
.map(chatResponse -> chatResponse.getResults().get(0).getOutput().getText())
78-
.collect(Collectors.joining());
79-
80-
assertThat(response).isNotEmpty();
81-
logger.info("Response: " + response);
82-
});
66+
this.contextRunner.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiChatAutoConfiguration.class))
67+
.run(context -> {
68+
ZhiPuAiChatModel chatModel = context.getBean(ZhiPuAiChatModel.class);
69+
Flux<ChatResponse> responseFlux = chatModel
70+
.stream(new Prompt(new UserMessage("Hello"), ChatOptions.builder().build()));
71+
String response = responseFlux.collectList()
72+
.block()
73+
.stream()
74+
.map(chatResponse -> chatResponse.getResults().get(0).getOutput().getText())
75+
.collect(Collectors.joining());
76+
77+
assertThat(response).isNotEmpty();
78+
logger.info("Response: " + response);
79+
});
8380
}
8481

8582
@Test
8683
void embedding() {
87-
this.contextRunner.withConfiguration(AutoConfigurations.of(ZhiPuAiEmbeddingAutoConfiguration.class))
84+
this.contextRunner.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
8885
.run(context -> {
8986
ZhiPuAiEmbeddingModel embeddingModel = context.getBean(ZhiPuAiEmbeddingModel.class);
9087

@@ -102,7 +99,7 @@ void embedding() {
10299

103100
@Test
104101
void generateImage() {
105-
this.contextRunner.withConfiguration(AutoConfigurations.of(ZhiPuAiImageAutoConfiguration.class))
102+
this.contextRunner.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
106103
.withPropertyValues("spring.ai.zhipuai.image.options.size=1024x1024")
107104
.run(context -> {
108105
ZhiPuAiImageModel ImageModel = context.getBean(ZhiPuAiImageModel.class);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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.zhipuai.autoconfigure;
18+
19+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
20+
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
21+
import org.springframework.boot.autoconfigure.AutoConfigurations;
22+
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
23+
24+
/**
25+
* Utility class for ZhiPuAI integration tests.
26+
*
27+
* @author Pawel Potaczala
28+
*/
29+
public final class ZhiPuAiITUtil {
30+
31+
private ZhiPuAiITUtil() {
32+
}
33+
34+
public static AutoConfigurations zhiPuAiToolAutoConfig(Class<?>... additionalAutoConfigurations) {
35+
Class<?>[] dependencies = new Class[] { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class,
36+
ToolCallingAutoConfiguration.class };
37+
Class<?>[] allAutoConfigurations = new Class[dependencies.length + additionalAutoConfigurations.length];
38+
System.arraycopy(dependencies, 0, allAutoConfigurations, 0, dependencies.length);
39+
System.arraycopy(additionalAutoConfigurations, 0, allAutoConfigurations, dependencies.length,
40+
additionalAutoConfigurations.length);
41+
42+
return AutoConfigurations.of(allAutoConfigurations);
43+
}
44+
45+
public static AutoConfigurations zhiPuAiAutoConfig(Class<?>... additionalAutoConfigurations) {
46+
Class<?>[] dependencies = new Class[] { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class,
47+
ToolCallingAutoConfiguration.class };
48+
Class<?>[] allAutoConfigurations = new Class[dependencies.length + additionalAutoConfigurations.length];
49+
System.arraycopy(dependencies, 0, allAutoConfigurations, 0, dependencies.length);
50+
System.arraycopy(additionalAutoConfigurations, 0, allAutoConfigurations, dependencies.length,
51+
additionalAutoConfigurations.length);
52+
53+
return AutoConfigurations.of(allAutoConfigurations);
54+
}
55+
56+
}

auto-configurations/models/spring-ai-autoconfigure-model-zhipuai/src/test/java/org/springframework/ai/model/zhipuai/autoconfigure/ZhiPuAiPropertiesTests.java

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,10 @@
2121
import org.skyscreamer.jsonassert.JSONCompareMode;
2222

2323
import org.springframework.ai.model.ModelOptionsUtils;
24-
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2524
import org.springframework.ai.zhipuai.ZhiPuAiChatModel;
2625
import org.springframework.ai.zhipuai.ZhiPuAiEmbeddingModel;
2726
import org.springframework.ai.zhipuai.ZhiPuAiImageModel;
2827
import org.springframework.ai.zhipuai.api.ZhiPuAiApi;
29-
import org.springframework.boot.autoconfigure.AutoConfigurations;
30-
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
3128
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3229

3330
import static org.assertj.core.api.Assertions.assertThat;
@@ -51,8 +48,7 @@ public void chatProperties() {
5148
"spring.ai.zhipuai.chat.options.model=MODEL_XYZ",
5249
"spring.ai.zhipuai.chat.options.temperature=0.55")
5350
// @formatter:on
54-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
55-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
51+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
5652
.run(context -> {
5753
var chatProperties = context.getBean(ZhiPuAiChatProperties.class);
5854
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -80,8 +76,7 @@ public void chatOverrideConnectionProperties() {
8076
"spring.ai.zhipuai.chat.options.model=MODEL_XYZ",
8177
"spring.ai.zhipuai.chat.options.temperature=0.55")
8278
// @formatter:on
83-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
84-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
79+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
8580
.run(context -> {
8681
var chatProperties = context.getBean(ZhiPuAiChatProperties.class);
8782
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -106,8 +101,7 @@ public void embeddingProperties() {
106101
"spring.ai.zhipuai.api-key=abc123",
107102
"spring.ai.zhipuai.embedding.options.model=MODEL_XYZ")
108103
// @formatter:on
109-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
110-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
104+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
111105
.run(context -> {
112106
var embeddingProperties = context.getBean(ZhiPuAiEmbeddingProperties.class);
113107
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -133,8 +127,7 @@ public void embeddingOverrideConnectionProperties() {
133127
"spring.ai.zhipuai.embedding.api-key=456",
134128
"spring.ai.zhipuai.embedding.options.model=MODEL_XYZ")
135129
// @formatter:on
136-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
137-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
130+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
138131
.run(context -> {
139132
var embeddingProperties = context.getBean(ZhiPuAiEmbeddingProperties.class);
140133
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -157,8 +150,7 @@ public void imageProperties() {
157150
"spring.ai.zhipuai.api-key=abc123",
158151
"spring.ai.zhipuai.image.options.model=MODEL_XYZ")
159152
// @formatter:on
160-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
161-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
153+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
162154
.run(context -> {
163155
var imageProperties = context.getBean(ZhiPuAiImageProperties.class);
164156
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -183,8 +175,7 @@ public void imageOverrideConnectionProperties() {
183175
"spring.ai.zhipuai.image.api-key=456",
184176
"spring.ai.zhipuai.image.options.model=MODEL_XYZ")
185177
// @formatter:on
186-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
187-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
178+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
188179
.run(context -> {
189180
var imageProperties = context.getBean(ZhiPuAiImageProperties.class);
190181
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -249,8 +240,7 @@ public void chatOptionsTest() {
249240
"spring.ai.zhipuai.chat.options.thinking.type=disabled"
250241
)
251242
// @formatter:on
252-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
253-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
243+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
254244
.run(context -> {
255245
var chatProperties = context.getBean(ZhiPuAiChatProperties.class);
256246
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -296,8 +286,7 @@ public void embeddingOptionsTest() {
296286
"spring.ai.zhipuai.embedding.options.user=userXYZ"
297287
)
298288
// @formatter:on
299-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
300-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
289+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
301290
.run(context -> {
302291
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
303292
var embeddingProperties = context.getBean(ZhiPuAiEmbeddingProperties.class);
@@ -319,8 +308,7 @@ public void imageOptionsTest() {
319308
"spring.ai.zhipuai.image.options.user=userXYZ"
320309
)
321310
// @formatter:on
322-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
323-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
311+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
324312
.run(context -> {
325313
var imageProperties = context.getBean(ZhiPuAiImageProperties.class);
326314
var connectionProperties = context.getBean(ZhiPuAiConnectionProperties.class);
@@ -338,17 +326,15 @@ void embeddingActivation() {
338326
new ApplicationContextRunner()
339327
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
340328
"spring.ai.model.embedding=none")
341-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
342-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
329+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
343330
.run(context -> {
344331
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingProperties.class)).isEmpty();
345332
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingModel.class)).isEmpty();
346333
});
347334

348335
new ApplicationContextRunner()
349336
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL")
350-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
351-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
337+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
352338
.run(context -> {
353339
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingProperties.class)).isNotEmpty();
354340
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingModel.class)).isNotEmpty();
@@ -357,8 +343,7 @@ void embeddingActivation() {
357343
new ApplicationContextRunner()
358344
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
359345
"spring.ai.model.embedding=zhipuai")
360-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
361-
RestClientAutoConfiguration.class, ZhiPuAiEmbeddingAutoConfiguration.class))
346+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiEmbeddingAutoConfiguration.class))
362347
.run(context -> {
363348
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingProperties.class)).isNotEmpty();
364349
assertThat(context.getBeansOfType(ZhiPuAiEmbeddingModel.class)).isNotEmpty();
@@ -370,17 +355,15 @@ void chatActivation() {
370355
new ApplicationContextRunner()
371356
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
372357
"spring.ai.model.chat=none")
373-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
374-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
358+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
375359
.run(context -> {
376360
assertThat(context.getBeansOfType(ZhiPuAiChatProperties.class)).isEmpty();
377361
assertThat(context.getBeansOfType(ZhiPuAiChatModel.class)).isEmpty();
378362
});
379363

380364
new ApplicationContextRunner()
381365
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL")
382-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
383-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
366+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
384367
.run(context -> {
385368
assertThat(context.getBeansOfType(ZhiPuAiChatProperties.class)).isNotEmpty();
386369
assertThat(context.getBeansOfType(ZhiPuAiChatModel.class)).isNotEmpty();
@@ -389,8 +372,7 @@ void chatActivation() {
389372
new ApplicationContextRunner()
390373
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
391374
"spring.ai.model.chat=zhipuai")
392-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
393-
RestClientAutoConfiguration.class, ZhiPuAiChatAutoConfiguration.class))
375+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiToolAutoConfig(ZhiPuAiChatAutoConfiguration.class))
394376
.run(context -> {
395377
assertThat(context.getBeansOfType(ZhiPuAiChatProperties.class)).isNotEmpty();
396378
assertThat(context.getBeansOfType(ZhiPuAiChatModel.class)).isNotEmpty();
@@ -403,17 +385,15 @@ void imageActivation() {
403385
new ApplicationContextRunner()
404386
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
405387
"spring.ai.model.image=none")
406-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
407-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
388+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
408389
.run(context -> {
409390
assertThat(context.getBeansOfType(ZhiPuAiImageProperties.class)).isEmpty();
410391
assertThat(context.getBeansOfType(ZhiPuAiImageModel.class)).isEmpty();
411392
});
412393

413394
new ApplicationContextRunner()
414395
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL")
415-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
416-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
396+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
417397
.run(context -> {
418398
assertThat(context.getBeansOfType(ZhiPuAiImageProperties.class)).isNotEmpty();
419399
assertThat(context.getBeansOfType(ZhiPuAiImageModel.class)).isNotEmpty();
@@ -422,8 +402,7 @@ void imageActivation() {
422402
new ApplicationContextRunner()
423403
.withPropertyValues("spring.ai.zhipuai.api-key=API_KEY", "spring.ai.zhipuai.base-url=TEST_BASE_URL",
424404
"spring.ai.model.image=zhipuai")
425-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
426-
RestClientAutoConfiguration.class, ZhiPuAiImageAutoConfiguration.class))
405+
.withConfiguration(ZhiPuAiITUtil.zhiPuAiAutoConfig(ZhiPuAiImageAutoConfiguration.class))
427406
.run(context -> {
428407
assertThat(context.getBeansOfType(ZhiPuAiImageProperties.class)).isNotEmpty();
429408
assertThat(context.getBeansOfType(ZhiPuAiImageModel.class)).isNotEmpty();

0 commit comments

Comments
 (0)