(improvement)(launcher)Move langchain4j related classes from launcher-common to common.

This commit is contained in:
jerryjzhang
2024-06-15 09:08:44 +08:00
parent 39b5dde11d
commit eb18857a9b
30 changed files with 36 additions and 35 deletions

View File

@@ -0,0 +1,39 @@
package com.tencent.supersonic.common.config;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LLMConfig {
private String provider;
private String baseUrl;
private String apiKey;
private String modelName;
private Double temperature = 0.0d;
private Long timeOut = 60L;
public LLMConfig(String provider, String baseUrl, String apiKey, String modelName) {
this.provider = provider;
this.baseUrl = baseUrl;
this.apiKey = apiKey;
this.modelName = modelName;
}
public LLMConfig(String provider, String baseUrl, String apiKey, String modelName,
double temperature) {
this.provider = provider;
this.baseUrl = baseUrl;
this.apiKey = apiKey;
this.modelName = modelName;
this.temperature = temperature;
}
}

View File

@@ -1,5 +1,6 @@
package com.tencent.supersonic.common.pojo;
package com.tencent.supersonic.common.config;
import com.tencent.supersonic.common.pojo.Parameter;
import com.tencent.supersonic.common.service.SystemConfigService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,6 +1,7 @@
package com.tencent.supersonic.common.pojo;
package com.tencent.supersonic.common.config;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.Parameter;
import com.tencent.supersonic.common.util.ContextUtils;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

View File

@@ -1,6 +1,6 @@
package com.tencent.supersonic.common.rest;
import com.tencent.supersonic.common.pojo.SystemConfig;
import com.tencent.supersonic.common.config.SystemConfig;
import com.tencent.supersonic.common.service.SystemConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;

View File

@@ -2,7 +2,7 @@ package com.tencent.supersonic.common.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tencent.supersonic.common.persistence.dataobject.SystemConfigDO;
import com.tencent.supersonic.common.pojo.SystemConfig;
import com.tencent.supersonic.common.config.SystemConfig;
public interface SystemConfigService extends IService<SystemConfigDO> {

View File

@@ -6,7 +6,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.tencent.supersonic.common.persistence.dataobject.SystemConfigDO;
import com.tencent.supersonic.common.persistence.mapper.SystemConfigMapper;
import com.tencent.supersonic.common.pojo.Parameter;
import com.tencent.supersonic.common.pojo.SystemConfig;
import com.tencent.supersonic.common.config.SystemConfig;
import com.tencent.supersonic.common.service.SystemConfigService;
import com.tencent.supersonic.common.util.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -0,0 +1,40 @@
package com.tencent.supersonic.common.util;
import com.tencent.supersonic.common.config.LLMConfig;
import com.tencent.supersonic.common.pojo.enums.S2ModelProvider;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.localai.LocalAiChatModel;
import dev.langchain4j.model.openai.FullOpenAiChatModel;
import org.apache.commons.lang3.StringUtils;
import java.time.Duration;
public class S2ChatModelProvider {
public static ChatLanguageModel provide(LLMConfig llmConfig) {
ChatLanguageModel chatLanguageModel = ContextUtils.getBean(ChatLanguageModel.class);
if (llmConfig == null || StringUtils.isBlank(llmConfig.getProvider())
|| StringUtils.isBlank(llmConfig.getBaseUrl())) {
return chatLanguageModel;
}
if (S2ModelProvider.OPEN_AI.name().equalsIgnoreCase(llmConfig.getProvider())) {
return FullOpenAiChatModel
.builder()
.baseUrl(llmConfig.getBaseUrl())
.modelName(llmConfig.getModelName())
.apiKey(llmConfig.getApiKey())
.temperature(llmConfig.getTemperature())
.timeout(Duration.ofSeconds(llmConfig.getTimeOut()))
.build();
} else if (S2ModelProvider.LOCAL_AI.name().equalsIgnoreCase(llmConfig.getProvider())) {
return LocalAiChatModel
.builder()
.baseUrl(llmConfig.getBaseUrl())
.modelName(llmConfig.getModelName())
.temperature(llmConfig.getTemperature())
.timeout(Duration.ofSeconds(llmConfig.getTimeOut()))
.build();
}
throw new RuntimeException("unsupported provider: " + llmConfig.getProvider());
}
}