diff --git a/yudao-module-ai/pom.xml b/yudao-module-ai/pom.xml
index 95c836777..4a2323bcf 100644
--- a/yudao-module-ai/pom.xml
+++ b/yudao-module-ai/pom.xml
@@ -84,6 +84,11 @@
spring-ai-starter-model-azure-openai
${spring-ai.version}
+
+ org.springframework.ai
+ spring-ai-starter-model-deepseek
+ ${spring-ai.version}
+
org.springframework.ai
spring-ai-starter-model-ollama
@@ -94,18 +99,6 @@
spring-ai-starter-model-stability-ai
${spring-ai.version}
-
-
- com.alibaba.cloud.ai
- spring-ai-alibaba-starter-dashscope
- ${alibaba-ai.version}
-
-
-
- org.springaicommunity
- qianfan-spring-boot-starter
- 1.0.0
-
org.springframework.ai
@@ -117,6 +110,20 @@
spring-ai-starter-model-minimax
${spring-ai.version}
+
+
+
+ com.alibaba.cloud.ai
+ spring-ai-alibaba-starter-dashscope
+ ${alibaba-ai.version}
+
+
+
+
+ org.springaicommunity
+ qianfan-spring-boot-starter
+ 1.0.0
+
org.springaicommunity
diff --git a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
index ae8a7e75f..4ff7c9e4d 100644
--- a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
+++ b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
@@ -5,7 +5,6 @@ import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.module.ai.framework.ai.core.AiModelFactory;
import cn.iocoder.yudao.module.ai.framework.ai.core.AiModelFactoryImpl;
import cn.iocoder.yudao.module.ai.framework.ai.core.model.baichuan.BaiChuanChatModel;
-import cn.iocoder.yudao.module.ai.framework.ai.core.model.deepseek.DeepSeekChatModel;
import cn.iocoder.yudao.module.ai.framework.ai.core.model.doubao.DouBaoChatModel;
import cn.iocoder.yudao.module.ai.framework.ai.core.model.hunyuan.HunYuanChatModel;
import cn.iocoder.yudao.module.ai.framework.ai.core.model.midjourney.api.MidjourneyApi;
@@ -52,33 +51,6 @@ public class AiAutoConfiguration {
// ========== 各种 AI Client 创建 ==========
- @Bean
- @ConditionalOnProperty(value = "yudao.ai.deepseek.enable", havingValue = "true")
- public DeepSeekChatModel deepSeekChatModel(YudaoAiProperties yudaoAiProperties) {
- YudaoAiProperties.DeepSeekProperties properties = yudaoAiProperties.getDeepseek();
- return buildDeepSeekChatModel(properties);
- }
-
- public DeepSeekChatModel buildDeepSeekChatModel(YudaoAiProperties.DeepSeekProperties properties) {
- if (StrUtil.isEmpty(properties.getModel())) {
- properties.setModel(DeepSeekChatModel.MODEL_DEFAULT);
- }
- OpenAiChatModel openAiChatModel = OpenAiChatModel.builder()
- .openAiApi(OpenAiApi.builder()
- .baseUrl(DeepSeekChatModel.BASE_URL)
- .apiKey(properties.getApiKey())
- .build())
- .defaultOptions(OpenAiChatOptions.builder()
- .model(properties.getModel())
- .temperature(properties.getTemperature())
- .maxTokens(properties.getMaxTokens())
- .topP(properties.getTopP())
- .build())
- .toolCallingManager(getToolCallingManager())
- .build();
- return new DeepSeekChatModel(openAiChatModel);
- }
-
@Bean
@ConditionalOnProperty(value = "yudao.ai.doubao.enable", havingValue = "true")
public DouBaoChatModel douBaoChatClient(YudaoAiProperties yudaoAiProperties) {
diff --git a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/YudaoAiProperties.java b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/YudaoAiProperties.java
index 7f8046768..7c26aa89c 100644
--- a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/YudaoAiProperties.java
+++ b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/YudaoAiProperties.java
@@ -13,12 +13,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
public class YudaoAiProperties {
- /**
- * DeepSeek
- */
- @SuppressWarnings("SpellCheckingInspection")
- private DeepSeekProperties deepseek;
-
/**
* 字节豆包
*/
@@ -60,19 +54,6 @@ public class YudaoAiProperties {
@SuppressWarnings("SpellCheckingInspection")
private SunoProperties suno;
- @Data
- public static class DeepSeekProperties {
-
- private String enable;
- private String apiKey;
-
- private String model;
- private Double temperature;
- private Integer maxTokens;
- private Double topP;
-
- }
-
@Data
public static class DouBaoProperties {
diff --git a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/deepseek/DeepSeekChatModel.java b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/deepseek/DeepSeekChatModel.java
deleted file mode 100644
index d603abf6b..000000000
--- a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/deepseek/DeepSeekChatModel.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.ai.framework.ai.core.model.deepseek;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.ai.chat.model.ChatModel;
-import org.springframework.ai.chat.model.ChatResponse;
-import org.springframework.ai.chat.prompt.ChatOptions;
-import org.springframework.ai.chat.prompt.Prompt;
-import org.springframework.ai.openai.OpenAiChatModel;
-import reactor.core.publisher.Flux;
-
-/**
- * DeepSeek {@link ChatModel} 实现类
- *
- * @author fansili
- */
-@Slf4j
-@RequiredArgsConstructor
-public class DeepSeekChatModel implements ChatModel {
-
- public static final String BASE_URL = "https://api.deepseek.com";
-
- public static final String MODEL_DEFAULT = "deepseek-chat";
-
- /**
- * 兼容 OpenAI 接口,进行复用
- */
- private final OpenAiChatModel openAiChatModel;
-
- @Override
- public ChatResponse call(Prompt prompt) {
- return openAiChatModel.call(prompt);
- }
-
- @Override
- public Flux stream(Prompt prompt) {
- return openAiChatModel.stream(prompt);
- }
-
- @Override
- public ChatOptions getDefaultOptions() {
- return openAiChatModel.getDefaultOptions();
- }
-
-}
diff --git a/yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DeepSeekChatModelTests.java b/yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DeepSeekChatModelTests.java
index d20a1761f..7b51df166 100644
--- a/yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DeepSeekChatModelTests.java
+++ b/yudao-module-ai/src/test/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/chat/DeepSeekChatModelTests.java
@@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.ai.framework.ai.core.model.chat;
-import cn.iocoder.yudao.module.ai.framework.ai.core.model.deepseek.DeepSeekChatModel;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.ai.chat.messages.Message;
@@ -8,9 +7,9 @@ import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
-import org.springframework.ai.openai.OpenAiChatModel;
-import org.springframework.ai.openai.OpenAiChatOptions;
-import org.springframework.ai.openai.api.OpenAiApi;
+import org.springframework.ai.deepseek.DeepSeekChatModel;
+import org.springframework.ai.deepseek.DeepSeekChatOptions;
+import org.springframework.ai.deepseek.api.DeepSeekApi;
import reactor.core.publisher.Flux;
import java.util.ArrayList;
@@ -23,19 +22,16 @@ import java.util.List;
*/
public class DeepSeekChatModelTests {
- private final OpenAiChatModel openAiChatModel = OpenAiChatModel.builder()
- .openAiApi(OpenAiApi.builder()
- .baseUrl(DeepSeekChatModel.BASE_URL)
- .apiKey("sk-e52047409b144d97b791a6a46a2d") // apiKey
+ private final DeepSeekChatModel chatModel = DeepSeekChatModel.builder()
+ .deepSeekApi(DeepSeekApi.builder()
+ .apiKey("sk-eaf4172a057344dd9bc64b1f806b6axx") // apiKey
.build())
- .defaultOptions(OpenAiChatOptions.builder()
+ .defaultOptions(DeepSeekChatOptions.builder()
.model("deepseek-chat") // 模型
.temperature(0.7)
.build())
.build();
- private final DeepSeekChatModel chatModel = new DeepSeekChatModel(openAiChatModel);
-
@Test
@Disabled
public void testCall() {