Skip to content

Commit fb6c14f

Browse files
committed
Fix anthropic model auto-configuration
Related to #4494 Signed-off-by: Hyoseop Song <[email protected]>
1 parent 60fb9ab commit fb6c14f

File tree

7 files changed

+48
-15
lines changed

7 files changed

+48
-15
lines changed

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/main/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicChatAutoConfiguration.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
3131
import org.springframework.beans.factory.ObjectProvider;
3232
import org.springframework.boot.autoconfigure.AutoConfiguration;
33-
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
3433
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3534
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3635
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -49,16 +48,15 @@
4948
* @author Christian Tzolov
5049
* @author Thomas Vitale
5150
* @author Ilayaperumal Gopinathan
51+
* @author Hyoseop Song
5252
* @since 1.0.0
5353
*/
54-
@AutoConfiguration(after = { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class,
55-
ToolCallingAutoConfiguration.class, WebClientAutoConfiguration.class })
54+
@AutoConfiguration(after = { RestClientAutoConfiguration.class,WebClientAutoConfiguration.class,
55+
ToolCallingAutoConfiguration.class, SpringAiRetryAutoConfiguration.class })
5656
@EnableConfigurationProperties({ AnthropicChatProperties.class, AnthropicConnectionProperties.class })
5757
@ConditionalOnClass(AnthropicApi.class)
5858
@ConditionalOnProperty(name = SpringAIModelProperties.CHAT_MODEL, havingValue = SpringAIModels.ANTHROPIC,
5959
matchIfMissing = true)
60-
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,
61-
ToolCallingAutoConfiguration.class, WebClientAutoConfiguration.class })
6260
public class AnthropicChatAutoConfiguration {
6361

6462
@Bean

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicChatAutoConfigurationIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.springframework.ai.chat.model.ChatResponse;
3434
import org.springframework.ai.chat.model.Generation;
3535
import org.springframework.ai.chat.prompt.Prompt;
36-
import org.springframework.boot.autoconfigure.AutoConfigurations;
3736
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3837

3938
import static org.assertj.core.api.Assertions.assertThat;
@@ -45,7 +44,7 @@ public class AnthropicChatAutoConfigurationIT {
4544

4645
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4746
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
48-
.withConfiguration(AutoConfigurations.of(AnthropicChatAutoConfiguration.class));
47+
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
4948

5049
@Test
5150
void call() {

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicModelConfigurationTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.junit.jupiter.api.Test;
2020

2121
import org.springframework.ai.anthropic.AnthropicChatModel;
22-
import org.springframework.boot.autoconfigure.AutoConfigurations;
2322
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2423

2524
import static org.assertj.core.api.Assertions.assertThat;
@@ -33,7 +32,7 @@ public class AnthropicModelConfigurationTests {
3332

3433
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
3534
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
36-
.withConfiguration(AutoConfigurations.of(AnthropicChatAutoConfiguration.class));
35+
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
3736

3837
@Test
3938
void chatModelActivation() {

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicPropertiesTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ public void connectionProperties() {
4444
"spring.ai.anthropic.chat.options.model=MODEL_XYZ",
4545
"spring.ai.anthropic.chat.options.temperature=0.55")
4646
// @formatter:on
47-
.withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class,
48-
RestClientAutoConfiguration.class, AnthropicChatAutoConfiguration.class))
47+
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
4948
.run(context -> {
5049
var chatProperties = context.getBean(AnthropicChatProperties.class);
5150
var connectionProperties = context.getBean(AnthropicConnectionProperties.class);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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.anthropic.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+
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
26+
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
27+
28+
29+
public abstract class BaseAnthropicIT {
30+
31+
public static AutoConfigurations anthropicAutoConfig(Class<?>... additional) {
32+
Class<?>[] dependencies = { SpringAiRetryAutoConfiguration.class, ToolCallingAutoConfiguration.class, RestClientAutoConfiguration.class,
33+
WebClientAutoConfiguration.class };
34+
Class<?>[] all = Stream.concat(Arrays.stream(dependencies), Arrays.stream(additional)).toArray(Class<?>[]::new);
35+
return AutoConfigurations.of(all);
36+
}
37+
38+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@
3131
import org.springframework.ai.chat.model.ChatResponse;
3232
import org.springframework.ai.chat.prompt.Prompt;
3333
import org.springframework.ai.model.anthropic.autoconfigure.AnthropicChatAutoConfiguration;
34+
import org.springframework.ai.model.anthropic.autoconfigure.BaseAnthropicIT;
3435
import org.springframework.ai.model.anthropic.autoconfigure.tool.MockWeatherService.Request;
3536
import org.springframework.ai.model.anthropic.autoconfigure.tool.MockWeatherService.Response;
3637
import org.springframework.ai.model.tool.ToolCallingChatOptions;
37-
import org.springframework.boot.autoconfigure.AutoConfigurations;
3838
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3939
import org.springframework.context.annotation.Bean;
4040
import org.springframework.context.annotation.Configuration;
@@ -49,7 +49,7 @@ class FunctionCallWithFunctionBeanIT {
4949

5050
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5151
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
52-
.withConfiguration(AutoConfigurations.of(AnthropicChatAutoConfiguration.class))
52+
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
5353
.withUserConfiguration(Config.class);
5454

5555
@Test

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import org.springframework.ai.chat.model.ChatResponse;
3131
import org.springframework.ai.chat.prompt.Prompt;
3232
import org.springframework.ai.model.anthropic.autoconfigure.AnthropicChatAutoConfiguration;
33+
import org.springframework.ai.model.anthropic.autoconfigure.BaseAnthropicIT;
3334
import org.springframework.ai.tool.function.FunctionToolCallback;
34-
import org.springframework.boot.autoconfigure.AutoConfigurations;
3535
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3636

3737
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +43,7 @@ public class FunctionCallWithPromptFunctionIT {
4343

4444
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4545
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
46-
.withConfiguration(AutoConfigurations.of(AnthropicChatAutoConfiguration.class));
46+
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
4747

4848
@Test
4949
void functionCallTest() {

0 commit comments

Comments
 (0)