From c4992501bd30c283734f39a57477fd8bcc522a53 Mon Sep 17 00:00:00 2001
From: beat4ocean <105700600+beat4ocean@users.noreply.github.com>
Date: Mon, 5 May 2025 15:51:26 +0800
Subject: [PATCH] [Improvement][headless] Only expose OPEN_AI/OLLAMA/DIFY chat
model providers. (#2237)
---
common/pom.xml | 44 +------
.../config/EmbeddingModelParameterConfig.java | 43 ++-----
.../common/pojo/ChatModelParameters.java | 12 +-
.../dashscope/spring/ChatModelProperties.java | 23 ----
.../dashscope/spring/DashscopeAutoConfig.java | 84 ------------
.../spring/EmbeddingModelProperties.java | 12 --
.../dashscope/spring/Properties.java | 29 -----
.../model/openai/OpenAiChatModel.java | 5 +-
.../model/zhipu/ChatCompletionModel.java | 16 ---
.../model/zhipu/ZhipuAiChatModel.java | 100 ---------------
.../provider/AzureModelFactory.java | 51 --------
.../provider/DashscopeModelFactory.java | 39 ------
.../provider/DifyModelFactory.java | 7 +-
.../provider/QianfanModelFactory.java | 47 -------
.../provider/ZhipuModelFactory.java | 45 -------
.../qianfan/spring/ChatModelProperties.java | 21 ---
.../spring/EmbeddingModelProperties.java | 18 ---
.../spring/LanguageModelProperties.java | 21 ---
.../qianfan/spring/Properties.java | 29 -----
.../qianfan/spring/QianfanAutoConfig.java | 102 ---------------
.../zhipu/spring/ChatModelProperties.java | 19 ---
.../spring/EmbeddingModelProperties.java | 16 ---
.../langchain4j/zhipu/spring/Properties.java | 23 ----
.../zhipu/spring/ZhipuAutoConfig.java | 53 --------
.../provider/ModelProviderTest.java | 121 ------------------
pom.xml | 25 ----
26 files changed, 25 insertions(+), 980 deletions(-)
delete mode 100644 common/src/main/java/dev/langchain4j/dashscope/spring/ChatModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/dashscope/spring/DashscopeAutoConfig.java
delete mode 100644 common/src/main/java/dev/langchain4j/dashscope/spring/EmbeddingModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/dashscope/spring/Properties.java
delete mode 100644 common/src/main/java/dev/langchain4j/model/zhipu/ChatCompletionModel.java
delete mode 100644 common/src/main/java/dev/langchain4j/model/zhipu/ZhipuAiChatModel.java
delete mode 100644 common/src/main/java/dev/langchain4j/provider/AzureModelFactory.java
delete mode 100644 common/src/main/java/dev/langchain4j/provider/DashscopeModelFactory.java
delete mode 100644 common/src/main/java/dev/langchain4j/provider/QianfanModelFactory.java
delete mode 100644 common/src/main/java/dev/langchain4j/provider/ZhipuModelFactory.java
delete mode 100644 common/src/main/java/dev/langchain4j/qianfan/spring/ChatModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/qianfan/spring/EmbeddingModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/qianfan/spring/LanguageModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/qianfan/spring/Properties.java
delete mode 100644 common/src/main/java/dev/langchain4j/qianfan/spring/QianfanAutoConfig.java
delete mode 100644 common/src/main/java/dev/langchain4j/zhipu/spring/ChatModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/zhipu/spring/EmbeddingModelProperties.java
delete mode 100644 common/src/main/java/dev/langchain4j/zhipu/spring/Properties.java
delete mode 100644 common/src/main/java/dev/langchain4j/zhipu/spring/ZhipuAutoConfig.java
diff --git a/common/pom.xml b/common/pom.xml
index 165189202..18c5c7dae 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -21,7 +21,10 @@
org.springframework.boot
spring-boot-starter-validation
-
+
+ org.springframework.boot
+ spring-boot-autoconfigure-processor
+
org.slf4j
@@ -33,7 +36,7 @@
org.apache.httpcomponents.client5
httpclient5
- ${httpclient5.version}
+ ${httpclient5.version}
@@ -182,10 +185,6 @@
dev.langchain4j
langchain4j-pgvector
-
- dev.langchain4j
- langchain4j-azure-open-ai
-
dev.langchain4j
langchain4j-embeddings-bge-small-zh
@@ -198,34 +197,6 @@
dev.langchain4j
langchain4j-embeddings-all-minilm-l6-v2-q
-
- dev.langchain4j
- langchain4j-qianfan
-
-
- dev.langchain4j
- langchain4j-zhipu-ai
-
-
- dev.langchain4j
- langchain4j-dashscope
-
-
- org.slf4j
- slf4j-simple
-
-
-
-
- dev.langchain4j
- langchain4j-chatglm
-
-
- org.slf4j
- slf4j-simple
-
-
-
dev.langchain4j
langchain4j-ollama
@@ -237,11 +208,6 @@
${hanlp.version}
-
- org.springframework.boot
- spring-boot-autoconfigure-processor
-
-
com.google.code.gson
gson
diff --git a/common/src/main/java/com/tencent/supersonic/common/config/EmbeddingModelParameterConfig.java b/common/src/main/java/com/tencent/supersonic/common/config/EmbeddingModelParameterConfig.java
index 0a9098a8a..4beacc241 100644
--- a/common/src/main/java/com/tencent/supersonic/common/config/EmbeddingModelParameterConfig.java
+++ b/common/src/main/java/com/tencent/supersonic/common/config/EmbeddingModelParameterConfig.java
@@ -4,14 +4,10 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.EmbeddingModelConfig;
import com.tencent.supersonic.common.pojo.Parameter;
-import dev.langchain4j.provider.AzureModelFactory;
-import dev.langchain4j.provider.DashscopeModelFactory;
import dev.langchain4j.provider.EmbeddingModelConstant;
import dev.langchain4j.provider.InMemoryModelFactory;
import dev.langchain4j.provider.OllamaModelFactory;
import dev.langchain4j.provider.OpenAiModelFactory;
-import dev.langchain4j.provider.QianfanModelFactory;
-import dev.langchain4j.provider.ZhipuModelFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -70,52 +66,31 @@ public class EmbeddingModelParameterConfig extends ParameterConfig {
private static ArrayList getCandidateValues() {
return Lists.newArrayList(InMemoryModelFactory.PROVIDER, OpenAiModelFactory.PROVIDER,
- OllamaModelFactory.PROVIDER, DashscopeModelFactory.PROVIDER,
- QianfanModelFactory.PROVIDER, ZhipuModelFactory.PROVIDER,
- AzureModelFactory.PROVIDER);
+ OllamaModelFactory.PROVIDER);
}
private static List getBaseUrlDependency() {
return getDependency(EMBEDDING_MODEL_PROVIDER.getName(),
- Lists.newArrayList(OpenAiModelFactory.PROVIDER, OllamaModelFactory.PROVIDER,
- AzureModelFactory.PROVIDER, DashscopeModelFactory.PROVIDER,
- QianfanModelFactory.PROVIDER, ZhipuModelFactory.PROVIDER),
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER, OllamaModelFactory.PROVIDER),
ImmutableMap.of(OpenAiModelFactory.PROVIDER, OpenAiModelFactory.DEFAULT_BASE_URL,
- OllamaModelFactory.PROVIDER, OllamaModelFactory.DEFAULT_BASE_URL,
- AzureModelFactory.PROVIDER, AzureModelFactory.DEFAULT_BASE_URL,
- DashscopeModelFactory.PROVIDER, DashscopeModelFactory.DEFAULT_BASE_URL,
- QianfanModelFactory.PROVIDER, QianfanModelFactory.DEFAULT_BASE_URL,
- ZhipuModelFactory.PROVIDER, ZhipuModelFactory.DEFAULT_BASE_URL));
+ OllamaModelFactory.PROVIDER, OllamaModelFactory.DEFAULT_BASE_URL));
}
private static List getApiKeyDependency() {
return getDependency(EMBEDDING_MODEL_PROVIDER.getName(),
- Lists.newArrayList(OpenAiModelFactory.PROVIDER, AzureModelFactory.PROVIDER,
- DashscopeModelFactory.PROVIDER, QianfanModelFactory.PROVIDER,
- ZhipuModelFactory.PROVIDER),
- ImmutableMap.of(OpenAiModelFactory.PROVIDER, DEMO, AzureModelFactory.PROVIDER, DEMO,
- DashscopeModelFactory.PROVIDER, DEMO, QianfanModelFactory.PROVIDER, DEMO,
- ZhipuModelFactory.PROVIDER, DEMO));
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER),
+ ImmutableMap.of(OpenAiModelFactory.PROVIDER, DEMO));
}
private static List getModelNameDependency() {
return getDependency(EMBEDDING_MODEL_PROVIDER.getName(),
Lists.newArrayList(InMemoryModelFactory.PROVIDER, OpenAiModelFactory.PROVIDER,
- OllamaModelFactory.PROVIDER, AzureModelFactory.PROVIDER,
- DashscopeModelFactory.PROVIDER, QianfanModelFactory.PROVIDER,
- ZhipuModelFactory.PROVIDER),
+ OllamaModelFactory.PROVIDER),
ImmutableMap.of(InMemoryModelFactory.PROVIDER, EmbeddingModelConstant.BGE_SMALL_ZH,
OpenAiModelFactory.PROVIDER,
OpenAiModelFactory.DEFAULT_EMBEDDING_MODEL_NAME,
OllamaModelFactory.PROVIDER,
- OllamaModelFactory.DEFAULT_EMBEDDING_MODEL_NAME, AzureModelFactory.PROVIDER,
- AzureModelFactory.DEFAULT_EMBEDDING_MODEL_NAME,
- DashscopeModelFactory.PROVIDER,
- DashscopeModelFactory.DEFAULT_EMBEDDING_MODEL_NAME,
- QianfanModelFactory.PROVIDER,
- QianfanModelFactory.DEFAULT_EMBEDDING_MODEL_NAME,
- ZhipuModelFactory.PROVIDER,
- ZhipuModelFactory.DEFAULT_EMBEDDING_MODEL_NAME));
+ OllamaModelFactory.DEFAULT_EMBEDDING_MODEL_NAME));
}
private static List getModelPathDependency() {
@@ -126,7 +101,7 @@ public class EmbeddingModelParameterConfig extends ParameterConfig {
private static List getSecretKeyDependency() {
return getDependency(EMBEDDING_MODEL_PROVIDER.getName(),
- Lists.newArrayList(QianfanModelFactory.PROVIDER),
- ImmutableMap.of(QianfanModelFactory.PROVIDER, DEMO));
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER),
+ ImmutableMap.of(OpenAiModelFactory.PROVIDER, DEMO));
}
}
diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/ChatModelParameters.java b/common/src/main/java/com/tencent/supersonic/common/pojo/ChatModelParameters.java
index 0cc42b1d3..cfca50591 100644
--- a/common/src/main/java/com/tencent/supersonic/common/pojo/ChatModelParameters.java
+++ b/common/src/main/java/com/tencent/supersonic/common/pojo/ChatModelParameters.java
@@ -85,20 +85,20 @@ public class ChatModelParameters {
private static List getEndpointDependency() {
return getDependency(CHAT_MODEL_PROVIDER.getName(),
- Lists.newArrayList(QianfanModelFactory.PROVIDER), ImmutableMap
- .of(QianfanModelFactory.PROVIDER, QianfanModelFactory.DEFAULT_ENDPOINT));
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER), ImmutableMap
+ .of(OpenAiModelFactory.PROVIDER, OpenAiModelFactory.DEFAULT_MODEL_NAME));
}
private static List getEnableSearchDependency() {
return getDependency(CHAT_MODEL_PROVIDER.getName(),
- Lists.newArrayList(DashscopeModelFactory.PROVIDER),
- ImmutableMap.of(DashscopeModelFactory.PROVIDER, "false"));
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER),
+ ImmutableMap.of(OpenAiModelFactory.PROVIDER, "false"));
}
private static List getSecretKeyDependency() {
return getDependency(CHAT_MODEL_PROVIDER.getName(),
- Lists.newArrayList(QianfanModelFactory.PROVIDER), ImmutableMap.of(
- QianfanModelFactory.PROVIDER, ModelProvider.DEMO_CHAT_MODEL.getApiKey()));
+ Lists.newArrayList(OpenAiModelFactory.PROVIDER), ImmutableMap.of(
+ OpenAiModelFactory.PROVIDER, ModelProvider.DEMO_CHAT_MODEL.getApiKey()));
}
private static List getDependency(String dependencyParameterName,
diff --git a/common/src/main/java/dev/langchain4j/dashscope/spring/ChatModelProperties.java b/common/src/main/java/dev/langchain4j/dashscope/spring/ChatModelProperties.java
deleted file mode 100644
index 5cfc33d62..000000000
--- a/common/src/main/java/dev/langchain4j/dashscope/spring/ChatModelProperties.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package dev.langchain4j.dashscope.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-@Getter
-@Setter
-class ChatModelProperties {
-
- String baseUrl;
- String apiKey;
- String modelName;
- Double topP;
- Integer topK;
- Boolean enableSearch;
- Integer seed;
- Float repetitionPenalty;
- Float temperature;
- List stops;
- Integer maxTokens;
-}
diff --git a/common/src/main/java/dev/langchain4j/dashscope/spring/DashscopeAutoConfig.java b/common/src/main/java/dev/langchain4j/dashscope/spring/DashscopeAutoConfig.java
deleted file mode 100644
index b74408496..000000000
--- a/common/src/main/java/dev/langchain4j/dashscope/spring/DashscopeAutoConfig.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package dev.langchain4j.dashscope.spring;
-
-import dev.langchain4j.model.dashscope.QwenChatModel;
-import dev.langchain4j.model.dashscope.QwenEmbeddingModel;
-import dev.langchain4j.model.dashscope.QwenLanguageModel;
-import dev.langchain4j.model.dashscope.QwenStreamingChatModel;
-import dev.langchain4j.model.dashscope.QwenStreamingLanguageModel;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import static dev.langchain4j.dashscope.spring.Properties.PREFIX;
-
-@Configuration
-@EnableConfigurationProperties(Properties.class)
-public class DashscopeAutoConfig {
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".chat-model.api-key")
- QwenChatModel qwenChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getChatModel();
- return QwenChatModel.builder().baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey())
- .modelName(chatModelProperties.getModelName()).topP(chatModelProperties.getTopP())
- .topK(chatModelProperties.getTopK())
- .enableSearch(chatModelProperties.getEnableSearch())
- .seed(chatModelProperties.getSeed())
- .repetitionPenalty(chatModelProperties.getRepetitionPenalty())
- .temperature(chatModelProperties.getTemperature())
- .stops(chatModelProperties.getStops()).maxTokens(chatModelProperties.getMaxTokens())
- .build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".streaming-chat-model.api-key")
- QwenStreamingChatModel qwenStreamingChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getStreamingChatModel();
- return QwenStreamingChatModel.builder().baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey())
- .modelName(chatModelProperties.getModelName()).topP(chatModelProperties.getTopP())
- .topK(chatModelProperties.getTopK())
- .enableSearch(chatModelProperties.getEnableSearch())
- .seed(chatModelProperties.getSeed())
- .repetitionPenalty(chatModelProperties.getRepetitionPenalty())
- .temperature(chatModelProperties.getTemperature())
- .stops(chatModelProperties.getStops()).maxTokens(chatModelProperties.getMaxTokens())
- .build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".language-model.api-key")
- QwenLanguageModel qwenLanguageModel(Properties properties) {
- ChatModelProperties languageModel = properties.getLanguageModel();
- return QwenLanguageModel.builder().baseUrl(languageModel.getBaseUrl())
- .apiKey(languageModel.getApiKey()).modelName(languageModel.getModelName())
- .topP(languageModel.getTopP()).topK(languageModel.getTopK())
- .enableSearch(languageModel.getEnableSearch()).seed(languageModel.getSeed())
- .repetitionPenalty(languageModel.getRepetitionPenalty())
- .temperature(languageModel.getTemperature()).stops(languageModel.getStops())
- .maxTokens(languageModel.getMaxTokens()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".streaming-language-model.api-key")
- QwenStreamingLanguageModel qwenStreamingLanguageModel(Properties properties) {
- ChatModelProperties languageModel = properties.getStreamingLanguageModel();
- return QwenStreamingLanguageModel.builder().baseUrl(languageModel.getBaseUrl())
- .apiKey(languageModel.getApiKey()).modelName(languageModel.getModelName())
- .topP(languageModel.getTopP()).topK(languageModel.getTopK())
- .enableSearch(languageModel.getEnableSearch()).seed(languageModel.getSeed())
- .repetitionPenalty(languageModel.getRepetitionPenalty())
- .temperature(languageModel.getTemperature()).stops(languageModel.getStops())
- .maxTokens(languageModel.getMaxTokens()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".embedding-model.api-key")
- QwenEmbeddingModel qwenEmbeddingModel(Properties properties) {
- EmbeddingModelProperties embeddingModelProperties = properties.getEmbeddingModel();
- return QwenEmbeddingModel.builder().apiKey(embeddingModelProperties.getApiKey())
- .modelName(embeddingModelProperties.getModelName()).build();
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/dashscope/spring/EmbeddingModelProperties.java b/common/src/main/java/dev/langchain4j/dashscope/spring/EmbeddingModelProperties.java
deleted file mode 100644
index 78c0b0b1e..000000000
--- a/common/src/main/java/dev/langchain4j/dashscope/spring/EmbeddingModelProperties.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package dev.langchain4j.dashscope.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class EmbeddingModelProperties {
-
- private String apiKey;
- private String modelName;
-}
diff --git a/common/src/main/java/dev/langchain4j/dashscope/spring/Properties.java b/common/src/main/java/dev/langchain4j/dashscope/spring/Properties.java
deleted file mode 100644
index b232a7549..000000000
--- a/common/src/main/java/dev/langchain4j/dashscope/spring/Properties.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package dev.langchain4j.dashscope.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
-
-@Getter
-@Setter
-@ConfigurationProperties(prefix = Properties.PREFIX)
-public class Properties {
-
- static final String PREFIX = "langchain4j.dashscope";
-
- @NestedConfigurationProperty
- ChatModelProperties chatModel;
-
- @NestedConfigurationProperty
- ChatModelProperties streamingChatModel;
-
- @NestedConfigurationProperty
- ChatModelProperties languageModel;
-
- @NestedConfigurationProperty
- ChatModelProperties streamingLanguageModel;
-
- @NestedConfigurationProperty
- EmbeddingModelProperties embeddingModel;
-}
diff --git a/common/src/main/java/dev/langchain4j/model/openai/OpenAiChatModel.java b/common/src/main/java/dev/langchain4j/model/openai/OpenAiChatModel.java
index aed877711..e237008a7 100644
--- a/common/src/main/java/dev/langchain4j/model/openai/OpenAiChatModel.java
+++ b/common/src/main/java/dev/langchain4j/model/openai/OpenAiChatModel.java
@@ -66,7 +66,6 @@ import static java.util.Collections.singletonList;
@Slf4j
public class OpenAiChatModel implements ChatLanguageModel, TokenCountEstimator {
- public static final String ZHIPU = "bigmodel";
private final OpenAiClient client;
private final String baseUrl;
private final String modelName;
@@ -192,9 +191,7 @@ public class OpenAiChatModel implements ChatLanguageModel, TokenCountEstimator {
.responseFormat(responseFormat).seed(seed).user(user)
.parallelToolCalls(parallelToolCalls);
- if (!(baseUrl.contains(ZHIPU))) {
- requestBuilder.temperature(temperature);
- }
+ requestBuilder.temperature(temperature);
if (toolSpecifications != null && !toolSpecifications.isEmpty()) {
requestBuilder.tools(toTools(toolSpecifications, strictTools));
diff --git a/common/src/main/java/dev/langchain4j/model/zhipu/ChatCompletionModel.java b/common/src/main/java/dev/langchain4j/model/zhipu/ChatCompletionModel.java
deleted file mode 100644
index 4e153f9e5..000000000
--- a/common/src/main/java/dev/langchain4j/model/zhipu/ChatCompletionModel.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package dev.langchain4j.model.zhipu;
-
-public enum ChatCompletionModel {
- GLM_4("glm-4"), GLM_3_TURBO("glm-3-turbo"), CHATGLM_TURBO("chatglm_turbo");
-
- private final String value;
-
- ChatCompletionModel(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return this.value;
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/model/zhipu/ZhipuAiChatModel.java b/common/src/main/java/dev/langchain4j/model/zhipu/ZhipuAiChatModel.java
deleted file mode 100644
index 3d14e4045..000000000
--- a/common/src/main/java/dev/langchain4j/model/zhipu/ZhipuAiChatModel.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package dev.langchain4j.model.zhipu;
-
-import dev.langchain4j.agent.tool.ToolSpecification;
-import dev.langchain4j.data.message.AiMessage;
-import dev.langchain4j.data.message.ChatMessage;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.output.Response;
-import dev.langchain4j.model.zhipu.chat.ChatCompletionRequest;
-import dev.langchain4j.model.zhipu.chat.ChatCompletionResponse;
-import dev.langchain4j.model.zhipu.spi.ZhipuAiChatModelBuilderFactory;
-import lombok.Builder;
-
-import java.util.List;
-
-import static dev.langchain4j.internal.RetryUtils.withRetry;
-import static dev.langchain4j.internal.Utils.getOrDefault;
-import static dev.langchain4j.internal.Utils.isNullOrEmpty;
-import static dev.langchain4j.internal.ValidationUtils.ensureNotEmpty;
-import static dev.langchain4j.model.zhipu.DefaultZhipuAiHelper.aiMessageFrom;
-import static dev.langchain4j.model.zhipu.DefaultZhipuAiHelper.finishReasonFrom;
-import static dev.langchain4j.model.zhipu.DefaultZhipuAiHelper.toTools;
-import static dev.langchain4j.model.zhipu.DefaultZhipuAiHelper.toZhipuAiMessages;
-import static dev.langchain4j.model.zhipu.DefaultZhipuAiHelper.tokenUsageFrom;
-import static dev.langchain4j.model.zhipu.chat.ToolChoiceMode.AUTO;
-import static dev.langchain4j.spi.ServiceHelper.loadFactories;
-import static java.util.Collections.singletonList;
-
-/**
- * Represents an ZhipuAi language model with a chat completion interface, such as glm-3-turbo and
- * glm-4. You can find description of parameters
- * here.
- */
-public class ZhipuAiChatModel implements ChatLanguageModel {
-
- private final String baseUrl;
- private final Double temperature;
- private final Double topP;
- private final String model;
- private final Integer maxRetries;
- private final Integer maxToken;
- private final ZhipuAiClient client;
-
- @Builder
- public ZhipuAiChatModel(String baseUrl, String apiKey, Double temperature, Double topP,
- String model, Integer maxRetries, Integer maxToken, Boolean logRequests,
- Boolean logResponses) {
- this.baseUrl = getOrDefault(baseUrl, "https://open.bigmodel.cn/");
- this.temperature = getOrDefault(temperature, 0.7);
- this.topP = topP;
- this.model = getOrDefault(model, ChatCompletionModel.GLM_4.toString());
- this.maxRetries = getOrDefault(maxRetries, 3);
- this.maxToken = getOrDefault(maxToken, 512);
- this.client = ZhipuAiClient.builder().baseUrl(this.baseUrl).apiKey(apiKey)
- .logRequests(getOrDefault(logRequests, false))
- .logResponses(getOrDefault(logResponses, false)).build();
- }
-
- public static ZhipuAiChatModelBuilder builder() {
- for (ZhipuAiChatModelBuilderFactory factories : loadFactories(
- ZhipuAiChatModelBuilderFactory.class)) {
- return factories.get();
- }
- return new ZhipuAiChatModelBuilder();
- }
-
- @Override
- public Response generate(List messages) {
- return generate(messages, (ToolSpecification) null);
- }
-
- @Override
- public Response generate(List messages,
- List toolSpecifications) {
- ensureNotEmpty(messages, "messages");
-
- ChatCompletionRequest.Builder requestBuilder =
- ChatCompletionRequest.builder().model(this.model).maxTokens(maxToken).stream(false)
- .topP(topP).toolChoice(AUTO).messages(toZhipuAiMessages(messages));
-
- if (!isNullOrEmpty(toolSpecifications)) {
- requestBuilder.tools(toTools(toolSpecifications));
- }
-
- ChatCompletionResponse response =
- withRetry(() -> client.chatCompletion(requestBuilder.build()), maxRetries);
- return Response.from(aiMessageFrom(response), tokenUsageFrom(response.getUsage()),
- finishReasonFrom(response.getChoices().get(0).getFinishReason()));
- }
-
- @Override
- public Response generate(List messages,
- ToolSpecification toolSpecification) {
- return generate(messages,
- toolSpecification != null ? singletonList(toolSpecification) : null);
- }
-
- public static class ZhipuAiChatModelBuilder {
- public ZhipuAiChatModelBuilder() {}
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/provider/AzureModelFactory.java b/common/src/main/java/dev/langchain4j/provider/AzureModelFactory.java
deleted file mode 100644
index 1637c3ac9..000000000
--- a/common/src/main/java/dev/langchain4j/provider/AzureModelFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package dev.langchain4j.provider;
-
-import com.tencent.supersonic.common.pojo.ChatModelConfig;
-import com.tencent.supersonic.common.pojo.EmbeddingModelConfig;
-import dev.langchain4j.model.azure.AzureOpenAiChatModel;
-import dev.langchain4j.model.azure.AzureOpenAiEmbeddingModel;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.embedding.EmbeddingModel;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.stereotype.Service;
-
-import java.time.Duration;
-
-@Service
-public class AzureModelFactory implements ModelFactory, InitializingBean {
- public static final String PROVIDER = "AZURE";
- public static final String DEFAULT_BASE_URL = "https://your-resource-name.openai.azure.com/";
- public static final String DEFAULT_MODEL_NAME = "gpt-35-turbo";
- public static final String DEFAULT_EMBEDDING_MODEL_NAME = "text-embedding-ada-002";
-
- @Override
- public ChatLanguageModel createChatModel(ChatModelConfig modelConfig) {
- AzureOpenAiChatModel.Builder builder = AzureOpenAiChatModel.builder()
- .endpoint(modelConfig.getBaseUrl()).apiKey(modelConfig.getApiKey())
- .deploymentName(modelConfig.getModelName())
- .temperature(modelConfig.getTemperature()).maxRetries(modelConfig.getMaxRetries())
- .topP(modelConfig.getTopP())
- .timeout(Duration.ofSeconds(
- modelConfig.getTimeOut() == null ? 0L : modelConfig.getTimeOut()))
- .logRequestsAndResponses(
- modelConfig.getLogRequests() != null && modelConfig.getLogResponses());
- return builder.build();
- }
-
- @Override
- public EmbeddingModel createEmbeddingModel(EmbeddingModelConfig embeddingModelConfig) {
- AzureOpenAiEmbeddingModel.Builder builder =
- AzureOpenAiEmbeddingModel.builder().endpoint(embeddingModelConfig.getBaseUrl())
- .apiKey(embeddingModelConfig.getApiKey())
- .deploymentName(embeddingModelConfig.getModelName())
- .maxRetries(embeddingModelConfig.getMaxRetries())
- .logRequestsAndResponses(embeddingModelConfig.getLogRequests() != null
- && embeddingModelConfig.getLogResponses());
- return builder.build();
- }
-
- @Override
- public void afterPropertiesSet() {
- ModelProvider.add(PROVIDER, this);
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/provider/DashscopeModelFactory.java b/common/src/main/java/dev/langchain4j/provider/DashscopeModelFactory.java
deleted file mode 100644
index 22529ef73..000000000
--- a/common/src/main/java/dev/langchain4j/provider/DashscopeModelFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package dev.langchain4j.provider;
-
-import com.tencent.supersonic.common.pojo.ChatModelConfig;
-import com.tencent.supersonic.common.pojo.EmbeddingModelConfig;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.dashscope.QwenChatModel;
-import dev.langchain4j.model.dashscope.QwenEmbeddingModel;
-import dev.langchain4j.model.dashscope.QwenModelName;
-import dev.langchain4j.model.embedding.EmbeddingModel;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.stereotype.Service;
-
-@Service
-public class DashscopeModelFactory implements ModelFactory, InitializingBean {
- public static final String PROVIDER = "DASHSCOPE";
- public static final String DEFAULT_BASE_URL = "https://dashscope.aliyuncs.com/api/v1";
- public static final String DEFAULT_MODEL_NAME = QwenModelName.QWEN_PLUS;
- public static final String DEFAULT_EMBEDDING_MODEL_NAME = "text-embedding-v2";
-
- @Override
- public ChatLanguageModel createChatModel(ChatModelConfig modelConfig) {
- return QwenChatModel.builder().baseUrl(modelConfig.getBaseUrl())
- .apiKey(modelConfig.getApiKey()).modelName(modelConfig.getModelName())
- .temperature(modelConfig.getTemperature() == null ? 0L
- : modelConfig.getTemperature().floatValue())
- .topP(modelConfig.getTopP()).enableSearch(modelConfig.getEnableSearch()).build();
- }
-
- @Override
- public EmbeddingModel createEmbeddingModel(EmbeddingModelConfig embeddingModelConfig) {
- return QwenEmbeddingModel.builder().apiKey(embeddingModelConfig.getApiKey())
- .modelName(embeddingModelConfig.getModelName()).build();
- }
-
- @Override
- public void afterPropertiesSet() {
- ModelProvider.add(PROVIDER, this);
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/provider/DifyModelFactory.java b/common/src/main/java/dev/langchain4j/provider/DifyModelFactory.java
index c1cf43d25..91c1c3ad0 100644
--- a/common/src/main/java/dev/langchain4j/provider/DifyModelFactory.java
+++ b/common/src/main/java/dev/langchain4j/provider/DifyModelFactory.java
@@ -6,7 +6,7 @@ import com.tencent.supersonic.common.util.AESEncryptionUtil;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.dify.DifyAiChatModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
-import dev.langchain4j.model.zhipu.ZhipuAiEmbeddingModel;
+import dev.langchain4j.model.openai.OpenAiEmbeddingModel;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;
@@ -27,8 +27,9 @@ public class DifyModelFactory implements ModelFactory, InitializingBean {
@Override
public EmbeddingModel createEmbeddingModel(EmbeddingModelConfig embeddingModelConfig) {
- return ZhipuAiEmbeddingModel.builder().baseUrl(embeddingModelConfig.getBaseUrl())
- .apiKey(embeddingModelConfig.getApiKey()).model(embeddingModelConfig.getModelName())
+ return OpenAiEmbeddingModel.builder().baseUrl(embeddingModelConfig.getBaseUrl())
+ .apiKey(embeddingModelConfig.getApiKey())
+ .modelName(embeddingModelConfig.getModelName())
.maxRetries(embeddingModelConfig.getMaxRetries())
.logRequests(embeddingModelConfig.getLogRequests())
.logResponses(embeddingModelConfig.getLogResponses()).build();
diff --git a/common/src/main/java/dev/langchain4j/provider/QianfanModelFactory.java b/common/src/main/java/dev/langchain4j/provider/QianfanModelFactory.java
deleted file mode 100644
index 28f8f3d3e..000000000
--- a/common/src/main/java/dev/langchain4j/provider/QianfanModelFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package dev.langchain4j.provider;
-
-import com.tencent.supersonic.common.pojo.ChatModelConfig;
-import com.tencent.supersonic.common.pojo.EmbeddingModelConfig;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.embedding.EmbeddingModel;
-import dev.langchain4j.model.qianfan.QianfanChatModel;
-import dev.langchain4j.model.qianfan.QianfanEmbeddingModel;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.stereotype.Service;
-
-@Service
-public class QianfanModelFactory implements ModelFactory, InitializingBean {
-
- public static final String PROVIDER = "QIANFAN";
- public static final String DEFAULT_BASE_URL = "https://aip.baidubce.com";
- public static final String DEFAULT_MODEL_NAME = "Llama-2-70b-chat";
-
- public static final String DEFAULT_EMBEDDING_MODEL_NAME = "Embedding-V1";
- public static final String DEFAULT_ENDPOINT = "llama_2_70b";
-
- @Override
- public ChatLanguageModel createChatModel(ChatModelConfig modelConfig) {
- return QianfanChatModel.builder().baseUrl(modelConfig.getBaseUrl())
- .apiKey(modelConfig.getApiKey()).secretKey(modelConfig.getSecretKey())
- .endpoint(modelConfig.getEndpoint()).modelName(modelConfig.getModelName())
- .temperature(modelConfig.getTemperature()).topP(modelConfig.getTopP())
- .maxRetries(modelConfig.getMaxRetries()).logRequests(modelConfig.getLogRequests())
- .logResponses(modelConfig.getLogResponses()).build();
- }
-
- @Override
- public EmbeddingModel createEmbeddingModel(EmbeddingModelConfig embeddingModelConfig) {
- return QianfanEmbeddingModel.builder().baseUrl(embeddingModelConfig.getBaseUrl())
- .apiKey(embeddingModelConfig.getApiKey())
- .secretKey(embeddingModelConfig.getSecretKey())
- .modelName(embeddingModelConfig.getModelName())
- .maxRetries(embeddingModelConfig.getMaxRetries())
- .logRequests(embeddingModelConfig.getLogRequests())
- .logResponses(embeddingModelConfig.getLogResponses()).build();
- }
-
- @Override
- public void afterPropertiesSet() {
- ModelProvider.add(PROVIDER, this);
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/provider/ZhipuModelFactory.java b/common/src/main/java/dev/langchain4j/provider/ZhipuModelFactory.java
deleted file mode 100644
index b326db682..000000000
--- a/common/src/main/java/dev/langchain4j/provider/ZhipuModelFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package dev.langchain4j.provider;
-
-import com.tencent.supersonic.common.pojo.ChatModelConfig;
-import com.tencent.supersonic.common.pojo.EmbeddingModelConfig;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.embedding.EmbeddingModel;
-import dev.langchain4j.model.zhipu.ChatCompletionModel;
-import dev.langchain4j.model.zhipu.ZhipuAiChatModel;
-import dev.langchain4j.model.zhipu.ZhipuAiEmbeddingModel;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.stereotype.Service;
-
-import static java.time.Duration.ofSeconds;
-
-@Service
-public class ZhipuModelFactory implements ModelFactory, InitializingBean {
- public static final String PROVIDER = "ZHIPU";
- public static final String DEFAULT_BASE_URL = "https://open.bigmodel.cn/";
- public static final String DEFAULT_MODEL_NAME = ChatCompletionModel.GLM_4.toString();
- public static final String DEFAULT_EMBEDDING_MODEL_NAME = "embedding-2";
-
- @Override
- public ChatLanguageModel createChatModel(ChatModelConfig modelConfig) {
- return ZhipuAiChatModel.builder().baseUrl(modelConfig.getBaseUrl())
- .apiKey(modelConfig.getApiKey()).model(modelConfig.getModelName())
- .temperature(modelConfig.getTemperature()).topP(modelConfig.getTopP())
- .maxRetries(modelConfig.getMaxRetries()).logRequests(modelConfig.getLogRequests())
- .logResponses(modelConfig.getLogResponses()).build();
- }
-
- @Override
- public EmbeddingModel createEmbeddingModel(EmbeddingModelConfig embeddingModelConfig) {
- return ZhipuAiEmbeddingModel.builder().baseUrl(embeddingModelConfig.getBaseUrl())
- .apiKey(embeddingModelConfig.getApiKey()).model(embeddingModelConfig.getModelName())
- .maxRetries(embeddingModelConfig.getMaxRetries()).callTimeout(ofSeconds(60))
- .connectTimeout(ofSeconds(60)).writeTimeout(ofSeconds(60))
- .readTimeout(ofSeconds(60)).logRequests(embeddingModelConfig.getLogRequests())
- .logResponses(embeddingModelConfig.getLogResponses()).build();
- }
-
- @Override
- public void afterPropertiesSet() {
- ModelProvider.add(PROVIDER, this);
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/qianfan/spring/ChatModelProperties.java b/common/src/main/java/dev/langchain4j/qianfan/spring/ChatModelProperties.java
deleted file mode 100644
index 9ec121214..000000000
--- a/common/src/main/java/dev/langchain4j/qianfan/spring/ChatModelProperties.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package dev.langchain4j.qianfan.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class ChatModelProperties {
- private String baseUrl;
- private String apiKey;
- private String secretKey;
- private Double temperature;
- private Integer maxRetries;
- private Double topP;
- private String modelName;
- private String endpoint;
- private String responseFormat;
- private Double penaltyScore;
- private Boolean logRequests;
- private Boolean logResponses;
-}
diff --git a/common/src/main/java/dev/langchain4j/qianfan/spring/EmbeddingModelProperties.java b/common/src/main/java/dev/langchain4j/qianfan/spring/EmbeddingModelProperties.java
deleted file mode 100644
index b3d3defff..000000000
--- a/common/src/main/java/dev/langchain4j/qianfan/spring/EmbeddingModelProperties.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package dev.langchain4j.qianfan.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class EmbeddingModelProperties {
- private String baseUrl;
- private String apiKey;
- private String secretKey;
- private Integer maxRetries;
- private String modelName;
- private String endpoint;
- private String user;
- private Boolean logRequests;
- private Boolean logResponses;
-}
diff --git a/common/src/main/java/dev/langchain4j/qianfan/spring/LanguageModelProperties.java b/common/src/main/java/dev/langchain4j/qianfan/spring/LanguageModelProperties.java
deleted file mode 100644
index 39c57096e..000000000
--- a/common/src/main/java/dev/langchain4j/qianfan/spring/LanguageModelProperties.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package dev.langchain4j.qianfan.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class LanguageModelProperties {
- private String baseUrl;
- private String apiKey;
- private String secretKey;
- private Double temperature;
- private Integer maxRetries;
- private Integer topK;
- private Double topP;
- private String modelName;
- private String endpoint;
- private Double penaltyScore;
- private Boolean logRequests;
- private Boolean logResponses;
-}
diff --git a/common/src/main/java/dev/langchain4j/qianfan/spring/Properties.java b/common/src/main/java/dev/langchain4j/qianfan/spring/Properties.java
deleted file mode 100644
index 7f809283e..000000000
--- a/common/src/main/java/dev/langchain4j/qianfan/spring/Properties.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package dev.langchain4j.qianfan.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
-
-@Getter
-@Setter
-@ConfigurationProperties(prefix = Properties.PREFIX)
-public class Properties {
-
- static final String PREFIX = "langchain4j.qianfan";
-
- @NestedConfigurationProperty
- ChatModelProperties chatModel;
-
- @NestedConfigurationProperty
- ChatModelProperties streamingChatModel;
-
- @NestedConfigurationProperty
- LanguageModelProperties languageModel;
-
- @NestedConfigurationProperty
- LanguageModelProperties streamingLanguageModel;
-
- @NestedConfigurationProperty
- EmbeddingModelProperties embeddingModel;
-}
diff --git a/common/src/main/java/dev/langchain4j/qianfan/spring/QianfanAutoConfig.java b/common/src/main/java/dev/langchain4j/qianfan/spring/QianfanAutoConfig.java
deleted file mode 100644
index e324d54a5..000000000
--- a/common/src/main/java/dev/langchain4j/qianfan/spring/QianfanAutoConfig.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package dev.langchain4j.qianfan.spring;
-
-import dev.langchain4j.model.qianfan.QianfanChatModel;
-import dev.langchain4j.model.qianfan.QianfanEmbeddingModel;
-import dev.langchain4j.model.qianfan.QianfanLanguageModel;
-import dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
-import dev.langchain4j.model.qianfan.QianfanStreamingLanguageModel;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import static dev.langchain4j.qianfan.spring.Properties.PREFIX;
-
-@Configuration
-@EnableConfigurationProperties(Properties.class)
-public class QianfanAutoConfig {
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".chat-model.api-key")
- QianfanChatModel qianfanChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getChatModel();
- return QianfanChatModel.builder().baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey())
- .secretKey(chatModelProperties.getSecretKey())
- .endpoint(chatModelProperties.getEndpoint())
- .penaltyScore(chatModelProperties.getPenaltyScore())
- .modelName(chatModelProperties.getModelName())
- .temperature(chatModelProperties.getTemperature())
- .topP(chatModelProperties.getTopP())
- .responseFormat(chatModelProperties.getResponseFormat())
- .maxRetries(chatModelProperties.getMaxRetries())
- .logRequests(chatModelProperties.getLogRequests())
- .logResponses(chatModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".streaming-chat-model.api-key")
- QianfanStreamingChatModel qianfanStreamingChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getStreamingChatModel();
- return QianfanStreamingChatModel.builder().endpoint(chatModelProperties.getEndpoint())
- .penaltyScore(chatModelProperties.getPenaltyScore())
- .temperature(chatModelProperties.getTemperature())
- .topP(chatModelProperties.getTopP()).baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey())
- .secretKey(chatModelProperties.getSecretKey())
- .modelName(chatModelProperties.getModelName())
- .responseFormat(chatModelProperties.getResponseFormat())
- .logRequests(chatModelProperties.getLogRequests())
- .logResponses(chatModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".language-model.api-key")
- QianfanLanguageModel qianfanLanguageModel(Properties properties) {
- LanguageModelProperties languageModelProperties = properties.getLanguageModel();
- return QianfanLanguageModel.builder().endpoint(languageModelProperties.getEndpoint())
- .penaltyScore(languageModelProperties.getPenaltyScore())
- .topK(languageModelProperties.getTopK()).topP(languageModelProperties.getTopP())
- .baseUrl(languageModelProperties.getBaseUrl())
- .apiKey(languageModelProperties.getApiKey())
- .secretKey(languageModelProperties.getSecretKey())
- .modelName(languageModelProperties.getModelName())
- .temperature(languageModelProperties.getTemperature())
- .maxRetries(languageModelProperties.getMaxRetries())
- .logRequests(languageModelProperties.getLogRequests())
- .logResponses(languageModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".streaming-language-model.api-key")
- QianfanStreamingLanguageModel qianfanStreamingLanguageModel(Properties properties) {
- LanguageModelProperties languageModelProperties = properties.getStreamingLanguageModel();
- return QianfanStreamingLanguageModel.builder()
- .endpoint(languageModelProperties.getEndpoint())
- .penaltyScore(languageModelProperties.getPenaltyScore())
- .topK(languageModelProperties.getTopK()).topP(languageModelProperties.getTopP())
- .baseUrl(languageModelProperties.getBaseUrl())
- .apiKey(languageModelProperties.getApiKey())
- .secretKey(languageModelProperties.getSecretKey())
- .modelName(languageModelProperties.getModelName())
- .temperature(languageModelProperties.getTemperature())
- .maxRetries(languageModelProperties.getMaxRetries())
- .logRequests(languageModelProperties.getLogRequests())
- .logResponses(languageModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".embedding-model.api-key")
- QianfanEmbeddingModel qianfanEmbeddingModel(Properties properties) {
- EmbeddingModelProperties embeddingModelProperties = properties.getEmbeddingModel();
- return QianfanEmbeddingModel.builder().baseUrl(embeddingModelProperties.getBaseUrl())
- .endpoint(embeddingModelProperties.getEndpoint())
- .apiKey(embeddingModelProperties.getApiKey())
- .secretKey(embeddingModelProperties.getSecretKey())
- .modelName(embeddingModelProperties.getModelName())
- .user(embeddingModelProperties.getUser())
- .maxRetries(embeddingModelProperties.getMaxRetries())
- .logRequests(embeddingModelProperties.getLogRequests())
- .logResponses(embeddingModelProperties.getLogResponses()).build();
- }
-}
diff --git a/common/src/main/java/dev/langchain4j/zhipu/spring/ChatModelProperties.java b/common/src/main/java/dev/langchain4j/zhipu/spring/ChatModelProperties.java
deleted file mode 100644
index c2b0e05c6..000000000
--- a/common/src/main/java/dev/langchain4j/zhipu/spring/ChatModelProperties.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package dev.langchain4j.zhipu.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class ChatModelProperties {
-
- String baseUrl;
- String apiKey;
- Double temperature;
- Double topP;
- String modelName;
- Integer maxRetries;
- Integer maxToken;
- Boolean logRequests;
- Boolean logResponses;
-}
diff --git a/common/src/main/java/dev/langchain4j/zhipu/spring/EmbeddingModelProperties.java b/common/src/main/java/dev/langchain4j/zhipu/spring/EmbeddingModelProperties.java
deleted file mode 100644
index 4e67756e6..000000000
--- a/common/src/main/java/dev/langchain4j/zhipu/spring/EmbeddingModelProperties.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package dev.langchain4j.zhipu.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class EmbeddingModelProperties {
-
- String baseUrl;
- String apiKey;
- String model;
- Integer maxRetries;
- Boolean logRequests;
- Boolean logResponses;
-}
diff --git a/common/src/main/java/dev/langchain4j/zhipu/spring/Properties.java b/common/src/main/java/dev/langchain4j/zhipu/spring/Properties.java
deleted file mode 100644
index f045d23fd..000000000
--- a/common/src/main/java/dev/langchain4j/zhipu/spring/Properties.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package dev.langchain4j.zhipu.spring;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
-
-@Getter
-@Setter
-@ConfigurationProperties(prefix = Properties.PREFIX)
-public class Properties {
-
- static final String PREFIX = "langchain4j.zhipu";
-
- @NestedConfigurationProperty
- ChatModelProperties chatModel;
-
- @NestedConfigurationProperty
- ChatModelProperties streamingChatModel;
-
- @NestedConfigurationProperty
- EmbeddingModelProperties embeddingModel;
-}
diff --git a/common/src/main/java/dev/langchain4j/zhipu/spring/ZhipuAutoConfig.java b/common/src/main/java/dev/langchain4j/zhipu/spring/ZhipuAutoConfig.java
deleted file mode 100644
index 3eebaebf7..000000000
--- a/common/src/main/java/dev/langchain4j/zhipu/spring/ZhipuAutoConfig.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package dev.langchain4j.zhipu.spring;
-
-import dev.langchain4j.model.zhipu.ZhipuAiChatModel;
-import dev.langchain4j.model.zhipu.ZhipuAiEmbeddingModel;
-import dev.langchain4j.model.zhipu.ZhipuAiStreamingChatModel;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import static dev.langchain4j.zhipu.spring.Properties.PREFIX;
-
-@Configuration
-@EnableConfigurationProperties(Properties.class)
-public class ZhipuAutoConfig {
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".chat-model.api-key")
- ZhipuAiChatModel zhipuAiChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getChatModel();
- return ZhipuAiChatModel.builder().baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey()).model(chatModelProperties.getModelName())
- .temperature(chatModelProperties.getTemperature())
- .topP(chatModelProperties.getTopP()).maxRetries(chatModelProperties.getMaxRetries())
- .maxToken(chatModelProperties.getMaxToken())
- .logRequests(chatModelProperties.getLogRequests())
- .logResponses(chatModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".streaming-chat-model.api-key")
- ZhipuAiStreamingChatModel zhipuStreamingChatModel(Properties properties) {
- ChatModelProperties chatModelProperties = properties.getStreamingChatModel();
- return ZhipuAiStreamingChatModel.builder().baseUrl(chatModelProperties.getBaseUrl())
- .apiKey(chatModelProperties.getApiKey()).model(chatModelProperties.getModelName())
- .temperature(chatModelProperties.getTemperature())
- .topP(chatModelProperties.getTopP()).maxToken(chatModelProperties.getMaxToken())
- .logRequests(chatModelProperties.getLogRequests())
- .logResponses(chatModelProperties.getLogResponses()).build();
- }
-
- @Bean
- @ConditionalOnProperty(PREFIX + ".embedding-model.api-key")
- ZhipuAiEmbeddingModel zhipuEmbeddingModel(Properties properties) {
- EmbeddingModelProperties embeddingModelProperties = properties.getEmbeddingModel();
- return ZhipuAiEmbeddingModel.builder().baseUrl(embeddingModelProperties.getBaseUrl())
- .apiKey(embeddingModelProperties.getApiKey())
- .model(embeddingModelProperties.getModel())
- .maxRetries(embeddingModelProperties.getMaxRetries())
- .logRequests(embeddingModelProperties.getLogRequests())
- .logResponses(embeddingModelProperties.getLogResponses()).build();
- }
-}
diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/provider/ModelProviderTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/provider/ModelProviderTest.java
index 95b862ee1..a052438b4 100644
--- a/launchers/standalone/src/test/java/com/tencent/supersonic/provider/ModelProviderTest.java
+++ b/launchers/standalone/src/test/java/com/tencent/supersonic/provider/ModelProviderTest.java
@@ -8,20 +8,15 @@ import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.output.Response;
-import dev.langchain4j.provider.AzureModelFactory;
-import dev.langchain4j.provider.DashscopeModelFactory;
import dev.langchain4j.provider.EmbeddingModelConstant;
import dev.langchain4j.provider.InMemoryModelFactory;
import dev.langchain4j.provider.ModelProvider;
import dev.langchain4j.provider.OpenAiModelFactory;
-import dev.langchain4j.provider.QianfanModelFactory;
-import dev.langchain4j.provider.ZhipuModelFactory;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import static org.junit.Assert.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Disabled
@@ -40,65 +35,6 @@ public class ModelProviderTest extends BaseApplication {
assertNotNull(response);
}
- @Test
- public void test_qianfan_chat_model() {
- ChatModelConfig modelConfig = new ChatModelConfig();
- modelConfig.setProvider(QianfanModelFactory.PROVIDER);
- modelConfig.setModelName(QianfanModelFactory.DEFAULT_MODEL_NAME);
- modelConfig.setBaseUrl(QianfanModelFactory.DEFAULT_BASE_URL);
- modelConfig.setSecretKey(ParameterConfig.DEMO);
- modelConfig.setApiKey(ParameterConfig.DEMO);
- modelConfig.setEndpoint(QianfanModelFactory.DEFAULT_ENDPOINT);
-
- ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- chatModel.generate("hi");
- });
- }
-
- @Test
- public void test_zhipu_chat_model() {
- ChatModelConfig modelConfig = new ChatModelConfig();
- modelConfig.setProvider(ZhipuModelFactory.PROVIDER);
- modelConfig.setModelName(ZhipuModelFactory.DEFAULT_MODEL_NAME);
- modelConfig.setBaseUrl(ZhipuModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey("e2724491714b3b2a0274e987905f1001.5JyHgf4vbZVJ7gC5");
-
- ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- chatModel.generate("hi");
- });
- }
-
- @Test
- public void test_dashscope_chat_model() {
- ChatModelConfig modelConfig = new ChatModelConfig();
- modelConfig.setProvider(DashscopeModelFactory.PROVIDER);
- modelConfig.setModelName(DashscopeModelFactory.DEFAULT_MODEL_NAME);
- modelConfig.setBaseUrl(DashscopeModelFactory.DEFAULT_BASE_URL);
- modelConfig.setEnableSearch(true);
- modelConfig.setApiKey(ParameterConfig.DEMO);
-
- ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- chatModel.generate("hi");
- });
- }
-
- @Test
- public void test_azure_chat_model() {
- ChatModelConfig modelConfig = new ChatModelConfig();
- modelConfig.setProvider(AzureModelFactory.PROVIDER);
- modelConfig.setModelName(AzureModelFactory.DEFAULT_MODEL_NAME);
- modelConfig.setBaseUrl(AzureModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey(ParameterConfig.DEMO);
-
- ChatLanguageModel chatModel = ModelProvider.getChatModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- chatModel.generate("hi");
- });
- }
-
@Test
public void test_in_memory_embedding_model() {
EmbeddingModelConfig modelConfig = new EmbeddingModelConfig();
@@ -122,61 +58,4 @@ public class ModelProviderTest extends BaseApplication {
Response embed = embeddingModel.embed("hi");
assertNotNull(embed);
}
-
- @Test
- public void test_azure_embedding_model() {
- EmbeddingModelConfig modelConfig = new EmbeddingModelConfig();
- modelConfig.setProvider(AzureModelFactory.PROVIDER);
- modelConfig.setModelName(AzureModelFactory.DEFAULT_EMBEDDING_MODEL_NAME);
- modelConfig.setBaseUrl(AzureModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey(ParameterConfig.DEMO);
-
- EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- embeddingModel.embed("hi");
- });
- }
-
- @Test
- public void test_dashscope_embedding_model() {
- EmbeddingModelConfig modelConfig = new EmbeddingModelConfig();
- modelConfig.setProvider(DashscopeModelFactory.PROVIDER);
- modelConfig.setModelName(DashscopeModelFactory.DEFAULT_EMBEDDING_MODEL_NAME);
- modelConfig.setBaseUrl(DashscopeModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey(ParameterConfig.DEMO);
-
- EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- embeddingModel.embed("hi");
- });
- }
-
- @Test
- public void test_qianfan_embedding_model() {
- EmbeddingModelConfig modelConfig = new EmbeddingModelConfig();
- modelConfig.setProvider(QianfanModelFactory.PROVIDER);
- modelConfig.setModelName(QianfanModelFactory.DEFAULT_EMBEDDING_MODEL_NAME);
- modelConfig.setBaseUrl(QianfanModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey(ParameterConfig.DEMO);
- modelConfig.setSecretKey(ParameterConfig.DEMO);
-
- EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- embeddingModel.embed("hi");
- });
- }
-
- @Test
- public void test_zhipu_embedding_model() {
- EmbeddingModelConfig modelConfig = new EmbeddingModelConfig();
- modelConfig.setProvider(ZhipuModelFactory.PROVIDER);
- modelConfig.setModelName(ZhipuModelFactory.DEFAULT_EMBEDDING_MODEL_NAME);
- modelConfig.setBaseUrl(ZhipuModelFactory.DEFAULT_BASE_URL);
- modelConfig.setApiKey("e2724491714b3b2a0274e987905f1001.5JyHgf4vbZVJ7gC5");
-
- EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(modelConfig);
- assertThrows(RuntimeException.class, () -> {
- embeddingModel.embed("hi");
- });
- }
}
diff --git a/pom.xml b/pom.xml
index 92921c6f2..8db6a8336 100644
--- a/pom.xml
+++ b/pom.xml
@@ -146,31 +146,11 @@
langchain4j-embeddings-bge-small-zh
${langchain4j.embedding.version}
-
- dev.langchain4j
- langchain4j-azure-open-ai
- ${langchain4j.version}
-
dev.langchain4j
langchain4j-embeddings-all-minilm-l6-v2-q
${langchain4j.embedding.version}
-
- dev.langchain4j
- langchain4j-qianfan
- ${langchain4j.version}
-
-
- dev.langchain4j
- langchain4j-zhipu-ai
- ${langchain4j.version}
-
-
- dev.langchain4j
- langchain4j-dashscope
- ${langchain4j.version}
-
dev.langchain4j
langchain4j-milvus
@@ -186,11 +166,6 @@
langchain4j-pgvector
${langchain4j.version}
-
- dev.langchain4j
- langchain4j-chatglm
- ${langchain4j.version}
-
dev.langchain4j
langchain4j-ollama