28
28
import org .springframework .ai .embedding .EmbeddingOptionsBuilder ;
29
29
import org .springframework .ai .embedding .EmbeddingResponse ;
30
30
import org .springframework .ai .embedding .EmbeddingResultMetadata ;
31
+ import org .springframework .ai .retry .autoconfigure .SpringAiRetryAutoConfiguration ;
31
32
import org .springframework .ai .vertexai .embedding .multimodal .VertexAiMultimodalEmbeddingModel ;
32
33
import org .springframework .ai .vertexai .embedding .text .VertexAiTextEmbeddingModel ;
33
34
import org .springframework .boot .autoconfigure .AutoConfigurations ;
@@ -52,12 +53,13 @@ public class VertexAiTextEmbeddingModelAutoConfigurationIT {
52
53
53
54
@ Test
54
55
public void textEmbedding () {
55
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
56
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
56
57
.run (context -> {
57
58
var connectionProperties = context .getBean (VertexAiEmbeddingConnectionProperties .class );
58
59
var textEmbeddingProperties = context .getBean (VertexAiTextEmbeddingProperties .class );
59
60
60
61
assertThat (connectionProperties ).isNotNull ();
62
+ assertThat (textEmbeddingProperties ).isNotNull ();
61
63
62
64
VertexAiTextEmbeddingModel embeddingModel = context .getBean (VertexAiTextEmbeddingModel .class );
63
65
assertThat (embeddingModel ).isInstanceOf (VertexAiTextEmbeddingModel .class );
@@ -71,21 +73,21 @@ public void textEmbedding() {
71
73
72
74
@ Test
73
75
void textEmbeddingActivation () {
74
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
76
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
75
77
.withPropertyValues ("spring.ai.model.embedding.text=none" )
76
78
.run (context -> {
77
79
assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isEmpty ();
78
80
assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isEmpty ();
79
81
});
80
82
81
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
83
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
82
84
.withPropertyValues ("spring.ai.model.embedding.text=vertexai" )
83
85
.run (context -> {
84
86
assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isNotEmpty ();
85
87
assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isNotEmpty ();
86
88
});
87
89
88
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
90
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
89
91
.run (context -> {
90
92
assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isNotEmpty ();
91
93
assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isNotEmpty ();
@@ -95,12 +97,13 @@ void textEmbeddingActivation() {
95
97
96
98
@ Test
97
99
public void multimodalEmbedding () {
98
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
100
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
99
101
.run (context -> {
100
102
var connectionProperties = context .getBean (VertexAiEmbeddingConnectionProperties .class );
101
103
var multimodalEmbeddingProperties = context .getBean (VertexAiMultimodalEmbeddingProperties .class );
102
104
103
105
assertThat (connectionProperties ).isNotNull ();
106
+ assertThat (multimodalEmbeddingProperties ).isNotNull ();
104
107
105
108
VertexAiMultimodalEmbeddingModel multiModelEmbeddingModel = context
106
109
.getBean (VertexAiMultimodalEmbeddingModel .class );
@@ -129,26 +132,37 @@ public void multimodalEmbedding() {
129
132
130
133
@ Test
131
134
void multimodalEmbeddingActivation () {
132
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
135
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
133
136
.withPropertyValues ("spring.ai.model.embedding.multimodal=none" )
134
137
.run (context -> {
135
138
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isEmpty ();
136
139
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isEmpty ();
137
140
});
138
141
139
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
142
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
140
143
.withPropertyValues ("spring.ai.model.embedding.multimodal=vertexai" )
141
144
.run (context -> {
142
145
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isNotEmpty ();
143
146
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isNotEmpty ();
144
147
});
145
148
146
- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
149
+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
147
150
.run (context -> {
148
151
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isNotEmpty ();
149
152
assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isNotEmpty ();
150
153
});
151
154
152
155
}
153
156
157
+ private static AutoConfigurations vertexAiAutoConfig (Class <?>... additionalAutoConfigurations ) {
158
+ Class <?>[] dependencies = new Class [] { SpringAiRetryAutoConfiguration .class ,
159
+ VertexAiEmbeddingConnectionAutoConfiguration .class };
160
+ Class <?>[] allAutoConfigurations = new Class [dependencies .length + additionalAutoConfigurations .length ];
161
+ System .arraycopy (dependencies , 0 , allAutoConfigurations , 0 , dependencies .length );
162
+ System .arraycopy (additionalAutoConfigurations , 0 , allAutoConfigurations , dependencies .length ,
163
+ additionalAutoConfigurations .length );
164
+
165
+ return AutoConfigurations .of (allAutoConfigurations );
166
+ }
167
+
154
168
}
0 commit comments