|
|
@@ -14,6 +14,7 @@ import cn.iocoder.byzs.module.ai.enums.model.AiPlatformEnum;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.baichuan.BaiChuanChatModel;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.deepseek.DeepSeekChatModel;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.doubao.DouBaoChatModel;
|
|
|
+import cn.iocoder.byzs.module.ai.framework.ai.core.model.doubao.DouBaoEmbeddingModel;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.hunyuan.HunYuanChatModel;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.midjourney.api.MidjourneyApi;
|
|
|
import cn.iocoder.byzs.module.ai.framework.ai.core.model.siliconflow.SiliconFlowApiConstants;
|
|
|
@@ -32,7 +33,10 @@ import com.alibaba.cloud.ai.dashscope.embedding.DashScopeEmbeddingModel;
|
|
|
import com.alibaba.cloud.ai.dashscope.embedding.DashScopeEmbeddingOptions;
|
|
|
import com.alibaba.cloud.ai.dashscope.image.DashScopeImageModel;
|
|
|
import com.azure.ai.openai.OpenAIClientBuilder;
|
|
|
+import com.volcengine.ark.runtime.service.ArkService;
|
|
|
import io.micrometer.observation.ObservationRegistry;
|
|
|
+import okhttp3.ConnectionPool;
|
|
|
+import okhttp3.Dispatcher;
|
|
|
import io.milvus.client.MilvusServiceClient;
|
|
|
import io.qdrant.client.QdrantClient;
|
|
|
import io.qdrant.client.QdrantGrpcClient;
|
|
|
@@ -115,6 +119,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Timer;
|
|
|
import java.util.TimerTask;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import static cn.iocoder.byzs.framework.common.util.collection.CollectionUtils.convertList;
|
|
|
import static org.springframework.ai.retry.RetryUtils.DEFAULT_RETRY_TEMPLATE;
|
|
|
@@ -279,6 +284,8 @@ public class AiModelFactoryImpl implements AiModelFactory {
|
|
|
return buildZhiPuEmbeddingModel(apiKey, url, model);
|
|
|
case MINI_MAX:
|
|
|
return buildMiniMaxEmbeddingModel(apiKey, url, model);
|
|
|
+ case DOU_BAO:
|
|
|
+ return buildDouBaoEmbeddingModel(apiKey, url, model);
|
|
|
case OPENAI:
|
|
|
return buildOpenAiEmbeddingModel(apiKey, url, model);
|
|
|
case AZURE_OPENAI:
|
|
|
@@ -586,6 +593,22 @@ public class AiModelFactoryImpl implements AiModelFactory {
|
|
|
return OllamaEmbeddingModel.builder().ollamaApi(ollamaApi).defaultOptions(ollamaOptions).build();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 创建豆包 Embedding 模型,使用火山引擎官方 SDK
|
|
|
+ */
|
|
|
+ private EmbeddingModel buildDouBaoEmbeddingModel(String apiKey, String url, String model) {
|
|
|
+ url = StrUtil.blankToDefault(url, "https://ark.cn-beijing.volces.com/api/v3");
|
|
|
+ ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
|
|
|
+ Dispatcher dispatcher = new Dispatcher();
|
|
|
+ ArkService arkService = ArkService.builder()
|
|
|
+ .dispatcher(dispatcher)
|
|
|
+ .connectionPool(connectionPool)
|
|
|
+ .baseUrl(url)
|
|
|
+ .apiKey(apiKey)
|
|
|
+ .build();
|
|
|
+ return new DouBaoEmbeddingModel(arkService, model);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 可参考 {@link OpenAiAutoConfiguration} 的 openAiEmbeddingModel 方法
|
|
|
*/
|
|
|
@@ -769,4 +792,4 @@ public class AiModelFactoryImpl implements AiModelFactory {
|
|
|
return SpringUtil.getBean(FunctionCallbackResolver.class);
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+}
|