Skip to content

Commit abae01e

Browse files
yuluo-yxYunKuiLuAias00
authored
feat(core): add dashscope model options (alibaba#1315)
* feat(core): Added support for dimension fields to the embedding model - Deprecating public constructors in favor of builder API - Added unit tests and integration tests. Signed-off-by: YunKui Lu <luyunkui95@gmail.com> * feat: add dashscope model options and merge embedding commit Signed-off-by: shown.Ji <yuluo08290126@gmail.com> * fix Signed-off-by: shown.Ji <yuluo08290126@gmail.com> * fix Signed-off-by: shown.Ji <yuluo08290126@gmail.com> * Inject restClient into dashScopeApi through reflection * fix ci * fix style * fix ci * style(core): fix code style Signed-off-by: shown.Ji <yuluo08290126@gmail.com> --------- Signed-off-by: YunKui Lu <luyunkui95@gmail.com> Signed-off-by: shown.Ji <yuluo08290126@gmail.com> Co-authored-by: YunKui Lu <luyunkui95@gmail.com> Co-authored-by: aias00 <liuhongyu@apache.org>
1 parent 113bd17 commit abae01e

File tree

14 files changed

+439
-120
lines changed

14 files changed

+439
-120
lines changed

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAudioSpeechAutoConfiguration.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
2020
import com.alibaba.cloud.ai.dashscope.api.DashScopeSpeechSynthesisApi;
2121
import com.alibaba.cloud.ai.dashscope.audio.DashScopeSpeechSynthesisModel;
22-
23-
import org.springframework.ai.model.SpringAIModelProperties;
24-
import org.springframework.ai.model.SpringAIModels;
2522
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2623
import org.springframework.boot.autoconfigure.AutoConfiguration;
2724
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
@@ -45,7 +42,7 @@
4542
SpringAiRetryAutoConfiguration.class })
4643
@ConditionalOnClass(DashScopeApi.class)
4744
@ConditionalOnDashScopeEnabled
48-
@ConditionalOnProperty(name = SpringAIModelProperties.AUDIO_SPEECH_MODEL, havingValue = SpringAIModels.OPENAI,
45+
@ConditionalOnProperty(name = DashScopeAudioSpeechSynthesisProperties.CONFIG_PREFIX, havingValue = "enabled",
4946
matchIfMissing = true)
5047
@EnableConfigurationProperties({ DashScopeConnectionProperties.class, DashScopeAudioSpeechSynthesisProperties.class })
5148
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAudioTranscriptionAutoConfiguration.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
2020
import com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi;
2121
import com.alibaba.cloud.ai.dashscope.audio.DashScopeAudioTranscriptionModel;
22-
23-
import org.springframework.ai.model.SpringAIModelProperties;
24-
import org.springframework.ai.model.SpringAIModels;
2522
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2623
import org.springframework.boot.autoconfigure.AutoConfiguration;
2724
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
@@ -45,7 +42,7 @@
4542
SpringAiRetryAutoConfiguration.class })
4643
@ConditionalOnClass(DashScopeApi.class)
4744
@ConditionalOnDashScopeEnabled
48-
@ConditionalOnProperty(name = SpringAIModelProperties.AUDIO_SPEECH_MODEL, havingValue = SpringAIModels.OPENAI,
45+
@ConditionalOnProperty(name = DashScopeAudioTranscriptionProperties.CONFIG_PREFIX, havingValue = "enabled",
4946
matchIfMissing = true)
5047
@EnableConfigurationProperties({ DashScopeConnectionProperties.class, DashScopeAudioTranscriptionProperties.class })
5148
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeEmbeddingAutoConfiguration.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
2020
import com.alibaba.cloud.ai.dashscope.embedding.DashScopeEmbeddingModel;
2121
import io.micrometer.observation.ObservationRegistry;
22-
2322
import org.springframework.ai.embedding.observation.EmbeddingModelObservationConvention;
24-
import org.springframework.ai.model.SpringAIModelProperties;
25-
import org.springframework.ai.model.SpringAIModels;
2623
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2724
import org.springframework.beans.factory.ObjectProvider;
2825
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -51,7 +48,7 @@
5148
SpringAiRetryAutoConfiguration.class })
5249
@ConditionalOnClass(DashScopeApi.class)
5350
@ConditionalOnDashScopeEnabled
54-
@ConditionalOnProperty(name = SpringAIModelProperties.AUDIO_SPEECH_MODEL, havingValue = SpringAIModels.OPENAI,
51+
@ConditionalOnProperty(prefix = DashScopeEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true",
5552
matchIfMissing = true)
5653
@EnableConfigurationProperties({ DashScopeConnectionProperties.class, DashScopeEmbeddingProperties.class })
5754
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,
@@ -62,13 +59,15 @@ public class DashScopeEmbeddingAutoConfiguration {
6259
@ConditionalOnMissingBean
6360
@Primary
6461
public DashScopeEmbeddingModel dashscopeEmbeddingModel(DashScopeConnectionProperties commonProperties,
65-
DashScopeEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder,
66-
WebClient.Builder webClientBuilder, RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler,
67-
ObjectProvider<ObservationRegistry> observationRegistry,
62+
DashScopeEmbeddingProperties embeddingProperties,
63+
ObjectProvider<WebClient.Builder> webClientBuilderProvider,
64+
ObjectProvider<RestClient.Builder> restClientBuilderProvider, RetryTemplate retryTemplate,
65+
ResponseErrorHandler responseErrorHandler, ObjectProvider<ObservationRegistry> observationRegistry,
6866
ObjectProvider<EmbeddingModelObservationConvention> observationConvention) {
6967

70-
var dashScopeApi = dashscopeEmbeddingApi(commonProperties, embeddingProperties, restClientBuilder,
71-
webClientBuilder, responseErrorHandler);
68+
var dashScopeApi = dashscopeEmbeddingApi(commonProperties, embeddingProperties,
69+
restClientBuilderProvider.getIfAvailable(RestClient::builder),
70+
webClientBuilderProvider.getIfAvailable(WebClient::builder), responseErrorHandler);
7271

7372
var embeddingModel = new DashScopeEmbeddingModel(dashScopeApi, embeddingProperties.getMetadataMode(),
7473
embeddingProperties.getOptions(), retryTemplate,

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeEmbeddingProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class DashScopeEmbeddingProperties extends DashScopeParentProperties {
2626

2727
public static final String CONFIG_PREFIX = "spring.ai.dashscope.embedding";
2828

29-
public static final String DEFAULT_EMBEDDING_MODEL = "text-embedding-v1";
29+
public static final String DEFAULT_EMBEDDING_MODEL = "text-embedding-v3";
3030

3131
/**
3232
* Enable Dashscope embedding client.

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeImageAutoConfiguration.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
import com.alibaba.cloud.ai.dashscope.api.DashScopeImageApi;
2121
import com.alibaba.cloud.ai.dashscope.image.DashScopeImageModel;
2222
import io.micrometer.observation.ObservationRegistry;
23-
2423
import org.springframework.ai.image.observation.ImageModelObservationConvention;
25-
import org.springframework.ai.model.SpringAIModelProperties;
26-
import org.springframework.ai.model.SpringAIModels;
2724
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2825
import org.springframework.beans.factory.ObjectProvider;
2926
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -51,7 +48,7 @@
5148
SpringAiRetryAutoConfiguration.class })
5249
@ConditionalOnClass(DashScopeApi.class)
5350
@ConditionalOnDashScopeEnabled
54-
@ConditionalOnProperty(name = SpringAIModelProperties.AUDIO_SPEECH_MODEL, havingValue = SpringAIModels.OPENAI,
51+
@ConditionalOnProperty(prefix = DashScopeImageProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true",
5552
matchIfMissing = true)
5653
@EnableConfigurationProperties({ DashScopeConnectionProperties.class, DashScopeImageProperties.class })
5754
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,

auto-configurations/spring-ai-alibaba-autoconfigure-dashscope/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeRerankAutoConfiguration.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818

1919
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
2020
import com.alibaba.cloud.ai.dashscope.rerank.DashScopeRerankModel;
21-
22-
import org.springframework.ai.model.SpringAIModelProperties;
23-
import org.springframework.ai.model.SpringAIModels;
2421
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
2522
import org.springframework.boot.autoconfigure.AutoConfiguration;
2623
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
@@ -47,7 +44,7 @@
4744
SpringAiRetryAutoConfiguration.class })
4845
@ConditionalOnClass(DashScopeApi.class)
4946
@ConditionalOnDashScopeEnabled
50-
@ConditionalOnProperty(name = SpringAIModelProperties.AUDIO_SPEECH_MODEL, havingValue = SpringAIModels.OPENAI,
47+
@ConditionalOnProperty(prefix = DashScopeRerankProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true",
5148
matchIfMissing = true)
5249
@EnableConfigurationProperties({ DashScopeConnectionProperties.class, DashScopeRerankProperties.class })
5350
@ImportAutoConfiguration(classes = { SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class,

0 commit comments

Comments
 (0)