Skip to content

Commit f649ed9

Browse files
committed
Add ToolCallingAutoConfiguration to AzureOpenAi test and tool
Signed-off-by: Willams <[email protected]>
1 parent 054d123 commit f649ed9

File tree

8 files changed

+133
-58
lines changed

8 files changed

+133
-58
lines changed

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

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.ai.azure.openai.AzureOpenAiAudioTranscriptionModel;
4242
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
4343
import org.springframework.ai.azure.openai.AzureOpenAiEmbeddingModel;
44+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
4445
import org.springframework.ai.chat.messages.AssistantMessage;
4546
import org.springframework.ai.chat.messages.Message;
4647
import org.springframework.ai.chat.messages.UserMessage;
@@ -98,7 +99,8 @@ class AzureOpenAiAutoConfigurationEntraIT {
9899

99100
@Test
100101
void chatCompletion() {
101-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
102+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
103+
AzureOpenAiChatAutoConfiguration.class))
102104
.run(context -> {
103105
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
104106
ChatResponse response = chatModel.call(new Prompt(List.of(this.userMessage, this.systemMessage)));
@@ -108,7 +110,8 @@ void chatCompletion() {
108110

109111
@Test
110112
void httpRequestContainsUserAgentAndCustomHeaders() {
111-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
113+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
114+
AzureOpenAiChatAutoConfiguration.class))
112115
.withPropertyValues("spring.ai.azure.openai.custom-headers.foo=bar",
113116
"spring.ai.azure.openai.custom-headers.fizz=buzz")
114117
.run(context -> {
@@ -135,7 +138,8 @@ void httpRequestContainsUserAgentAndCustomHeaders() {
135138

136139
@Test
137140
void chatCompletionStreaming() {
138-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
141+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
142+
AzureOpenAiChatAutoConfiguration.class))
139143
.run(context -> {
140144

141145
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
@@ -159,7 +163,8 @@ void chatCompletionStreaming() {
159163

160164
@Test
161165
void embedding() {
162-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
166+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
167+
AzureOpenAiEmbeddingAutoConfiguration.class))
163168
.run(context -> {
164169
AzureOpenAiEmbeddingModel embeddingModel = context.getBean(AzureOpenAiEmbeddingModel.class);
165170

@@ -180,7 +185,8 @@ void embedding() {
180185
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_TRANSCRIPTION_DEPLOYMENT_NAME", matches = ".+")
181186
void transcribe() {
182187
this.contextRunner
183-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
188+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
189+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
184190
.run(context -> {
185191
AzureOpenAiAudioTranscriptionModel transcriptionModel = context
186192
.getBean(AzureOpenAiAudioTranscriptionModel.class);
@@ -195,22 +201,25 @@ void transcribe() {
195201
void chatActivation() {
196202

197203
// Disable the chat auto-configuration.
198-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
204+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
205+
AzureOpenAiChatAutoConfiguration.class))
199206
.withPropertyValues("spring.ai.model.chat=none")
200207
.run(context -> {
201208
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isEmpty();
202209
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isEmpty();
203210
});
204211

205212
// The chat auto-configuration is enabled by default.
206-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
213+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
214+
AzureOpenAiChatAutoConfiguration.class))
207215
.run(context -> {
208216
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
209217
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isNotEmpty();
210218
});
211219

212220
// Explicitly enable the chat auto-configuration.
213-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
221+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
222+
AzureOpenAiChatAutoConfiguration.class))
214223
.withPropertyValues("spring.ai.model.chat=azure-openai")
215224
.run(context -> {
216225
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
@@ -222,22 +231,25 @@ void chatActivation() {
222231
void embeddingActivation() {
223232

224233
// Disable the embedding auto-configuration.
225-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
234+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
235+
AzureOpenAiEmbeddingAutoConfiguration.class))
226236
.withPropertyValues("spring.ai.model.embedding=none")
227237
.run(context -> {
228238
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isEmpty();
229239
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingProperties.class)).isEmpty();
230240
});
231241

232242
// The embedding auto-configuration is enabled by default.
233-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
243+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
244+
AzureOpenAiEmbeddingAutoConfiguration.class))
234245
.run(context -> {
235246
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
236247
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingProperties.class)).isNotEmpty();
237248
});
238249

239250
// Explicitly enable the embedding auto-configuration.
240-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
251+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
252+
AzureOpenAiEmbeddingAutoConfiguration.class))
241253
.withPropertyValues("spring.ai.model.embedding=azure-openai")
242254
.run(context -> {
243255
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
@@ -250,7 +262,8 @@ void audioTranscriptionActivation() {
250262

251263
// Disable the transcription auto-configuration.
252264
this.contextRunner
253-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
265+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
266+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
254267
.withPropertyValues("spring.ai.model.audio.transcription=none")
255268
.run(context -> {
256269
assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isEmpty();
@@ -259,12 +272,14 @@ void audioTranscriptionActivation() {
259272

260273
// The transcription auto-configuration is enabled by default.
261274
this.contextRunner
262-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
275+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
276+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
263277
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
264278

265279
// Explicitly enable the transcription auto-configuration.
266280
this.contextRunner
267-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
281+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
282+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
268283
.withPropertyValues("spring.ai.model.audio.transcription=azure-openai")
269284
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
270285
}
@@ -273,7 +288,8 @@ void audioTranscriptionActivation() {
273288
void openAIClientBuilderCustomizer() {
274289
AtomicBoolean firstCustomizationApplied = new AtomicBoolean(false);
275290
AtomicBoolean secondCustomizationApplied = new AtomicBoolean(false);
276-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
291+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
292+
AzureOpenAiChatAutoConfiguration.class))
277293
.withBean("first", AzureOpenAIClientBuilderCustomizer.class,
278294
() -> clientBuilder -> firstCustomizationApplied.set(true))
279295
.withBean("second", AzureOpenAIClientBuilderCustomizer.class,

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

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.springframework.ai.azure.openai.AzureOpenAiAudioTranscriptionModel;
4040
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
4141
import org.springframework.ai.azure.openai.AzureOpenAiEmbeddingModel;
42+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
4243
import org.springframework.ai.chat.messages.AssistantMessage;
4344
import org.springframework.ai.chat.messages.Message;
4445
import org.springframework.ai.chat.messages.UserMessage;
@@ -96,7 +97,8 @@ class AzureOpenAiAutoConfigurationIT {
9697

9798
@Test
9899
void chatCompletion() {
99-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
100+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
101+
AzureOpenAiChatAutoConfiguration.class))
100102
.run(context -> {
101103
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
102104
ChatResponse response = chatModel.call(new Prompt(List.of(this.userMessage, this.systemMessage)));
@@ -106,7 +108,8 @@ void chatCompletion() {
106108

107109
@Test
108110
void httpRequestContainsUserAgentAndCustomHeaders() {
109-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
111+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
112+
AzureOpenAiChatAutoConfiguration.class))
110113
.withPropertyValues("spring.ai.azure.openai.custom-headers.foo=bar",
111114
"spring.ai.azure.openai.custom-headers.fizz=buzz")
112115
.run(context -> {
@@ -133,7 +136,8 @@ void httpRequestContainsUserAgentAndCustomHeaders() {
133136

134137
@Test
135138
void chatCompletionStreaming() {
136-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
139+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
140+
AzureOpenAiChatAutoConfiguration.class))
137141
.run(context -> {
138142

139143
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
@@ -157,7 +161,8 @@ void chatCompletionStreaming() {
157161

158162
@Test
159163
void embedding() {
160-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
164+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
165+
AzureOpenAiEmbeddingAutoConfiguration.class))
161166
.run(context -> {
162167
AzureOpenAiEmbeddingModel embeddingModel = context.getBean(AzureOpenAiEmbeddingModel.class);
163168

@@ -178,7 +183,8 @@ void embedding() {
178183
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_TRANSCRIPTION_DEPLOYMENT_NAME", matches = ".+")
179184
void transcribe() {
180185
this.contextRunner
181-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
186+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
187+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
182188
.run(context -> {
183189
AzureOpenAiAudioTranscriptionModel transcriptionModel = context
184190
.getBean(AzureOpenAiAudioTranscriptionModel.class);
@@ -193,22 +199,25 @@ void transcribe() {
193199
void chatActivation() {
194200

195201
// Disable the chat auto-configuration.
196-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
202+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
203+
AzureOpenAiChatAutoConfiguration.class))
197204
.withPropertyValues("spring.ai.model.chat=none")
198205
.run(context -> {
199206
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isEmpty();
200207
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isEmpty();
201208
});
202209

203210
// The chat auto-configuration is enabled by default.
204-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
211+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
212+
AzureOpenAiChatAutoConfiguration.class))
205213
.run(context -> {
206214
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
207215
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isNotEmpty();
208216
});
209217

210218
// Explicitly enable the chat auto-configuration.
211-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
219+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
220+
AzureOpenAiChatAutoConfiguration.class))
212221
.withPropertyValues("spring.ai.model.chat=azure-openai")
213222
.run(context -> {
214223
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
@@ -220,22 +229,25 @@ void chatActivation() {
220229
void embeddingActivation() {
221230

222231
// Disable the embedding auto-configuration.
223-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
232+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
233+
AzureOpenAiEmbeddingAutoConfiguration.class))
224234
.withPropertyValues("spring.ai.model.embedding=none")
225235
.run(context -> {
226236
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isEmpty();
227237
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingProperties.class)).isEmpty();
228238
});
229239

230240
// The embedding auto-configuration is enabled by default.
231-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
241+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
242+
AzureOpenAiEmbeddingAutoConfiguration.class))
232243
.run(context -> {
233244
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
234245
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingProperties.class)).isNotEmpty();
235246
});
236247

237248
// Explicitly enable the embedding auto-configuration.
238-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
249+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
250+
AzureOpenAiEmbeddingAutoConfiguration.class))
239251
.withPropertyValues("spring.ai.model.embedding=azure-openai")
240252
.run(context -> {
241253
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
@@ -248,7 +260,8 @@ void audioTranscriptionActivation() {
248260

249261
// Disable the transcription auto-configuration.
250262
this.contextRunner
251-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
263+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
264+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
252265
.withPropertyValues("spring.ai.model.audio.transcription=none")
253266
.run(context -> {
254267
assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isEmpty();
@@ -257,12 +270,14 @@ void audioTranscriptionActivation() {
257270

258271
// The transcription auto-configuration is enabled by default.
259272
this.contextRunner
260-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
273+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
274+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
261275
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
262276

263277
// Explicitly enable the transcription auto-configuration.
264278
this.contextRunner
265-
.withConfiguration(AutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
279+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
280+
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
266281
.withPropertyValues("spring.ai.model.audio.transcription=azure-openai")
267282
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
268283
}
@@ -271,7 +286,8 @@ void audioTranscriptionActivation() {
271286
void openAIClientBuilderCustomizer() {
272287
AtomicBoolean firstCustomizationApplied = new AtomicBoolean(false);
273288
AtomicBoolean secondCustomizationApplied = new AtomicBoolean(false);
274-
this.contextRunner.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
289+
this.contextRunner.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
290+
AzureOpenAiChatAutoConfiguration.class))
275291
.withBean("first", AzureOpenAIClientBuilderCustomizer.class,
276292
() -> clientBuilder -> firstCustomizationApplied.set(true))
277293
.withBean("second", AzureOpenAIClientBuilderCustomizer.class,

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.junit.jupiter.api.Test;
2020

21+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
2122
import org.springframework.boot.autoconfigure.AutoConfigurations;
2223
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2324

@@ -36,7 +37,9 @@ public void embeddingPropertiesTest() {
3637
.withPropertyValues("spring.ai.azure.openai.api-key=TEST_API_KEY",
3738
"spring.ai.azure.openai.endpoint=TEST_ENDPOINT",
3839
"spring.ai.azure.openai.embedding.options.deployment-name=MODEL_XYZ")
39-
.withConfiguration(AutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
40+
.withConfiguration(AutoConfigurations.of(
41+
ToolCallingAutoConfiguration.class,
42+
AzureOpenAiEmbeddingAutoConfiguration.class))
4043
.run(context -> {
4144
var chatProperties = context.getBean(AzureOpenAiEmbeddingProperties.class);
4245
var connectionProperties = context.getBean(AzureOpenAiConnectionProperties.class);
@@ -51,8 +54,9 @@ public void embeddingPropertiesTest() {
5154
@Test
5255
public void chatPropertiesTest() {
5356

54-
new ApplicationContextRunner().withPropertyValues(
55-
// @formatter:off
57+
new ApplicationContextRunner()
58+
.withPropertyValues(
59+
// @formatter:off
5660
"spring.ai.azure.openai.api-key=API_KEY",
5761
"spring.ai.azure.openai.endpoint=ENDPOINT",
5862

@@ -68,7 +72,9 @@ public void chatPropertiesTest() {
6872
"spring.ai.azure.openai.chat.options.user=userXYZ"
6973
)
7074
// @formatter:on
71-
.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class,
75+
.withConfiguration(AutoConfigurations.of(
76+
ToolCallingAutoConfiguration.class,
77+
AzureOpenAiChatAutoConfiguration.class,
7278
AzureOpenAiEmbeddingAutoConfiguration.class))
7379
.run(context -> {
7480
var chatProperties = context.getBean(AzureOpenAiChatProperties.class);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
2828
import org.springframework.ai.azure.openai.AzureOpenAiEmbeddingModel;
29+
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
2930
import org.springframework.ai.chat.messages.AssistantMessage;
3031
import org.springframework.ai.chat.messages.Message;
3132
import org.springframework.ai.chat.messages.UserMessage;
@@ -60,7 +61,8 @@ public class AzureOpenAiDirectOpenAiAutoConfigurationIT {
6061
"spring.ai.azure.openai.embedding.options.deployment-name=" + EMBEDDING_MODEL_NAME
6162
// @formatter:on
6263
)
63-
.withConfiguration(AutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class,
64+
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
65+
AzureOpenAiChatAutoConfiguration.class,
6466
AzureOpenAiEmbeddingAutoConfiguration.class));
6567

6668
private final Message systemMessage = new SystemPromptTemplate("""

0 commit comments

Comments
 (0)