mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
(improvement)(common) support qianfan in springboot (#1175)
This commit is contained in:
@@ -217,6 +217,12 @@
|
|||||||
<groupId>dev.langchain4j</groupId>
|
<groupId>dev.langchain4j</groupId>
|
||||||
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>
|
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.langchain4j</groupId>
|
||||||
|
<artifactId>langchain4j-qianfan</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!--langchain4j-->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.hankcs</groupId>
|
<groupId>com.hankcs</groupId>
|
||||||
<artifactId>hanlp</artifactId>
|
<artifactId>hanlp</artifactId>
|
||||||
@@ -226,6 +232,12 @@
|
|||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-lang3</artifactId>
|
<artifactId>commons-lang3</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-autoconfigure-processor</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,114 @@
|
|||||||
|
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 AutoConfig {
|
||||||
|
|
||||||
|
@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 openAiStreamingLanguageModel(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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
|
|||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||||
|
|
||||||
@SpringBootApplication(scanBasePackages = {"com.tencent.supersonic", "dev.langchain4j.model"},
|
@SpringBootApplication(scanBasePackages = {"com.tencent.supersonic", "dev.langchain4j"},
|
||||||
exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
|
exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@EnableAsync
|
@EnableAsync
|
||||||
|
|||||||
10
pom.xml
10
pom.xml
@@ -190,6 +190,16 @@
|
|||||||
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>
|
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>
|
||||||
<version>${langchain4j.version}</version>
|
<version>${langchain4j.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.langchain4j</groupId>
|
||||||
|
<artifactId>langchain4j-qianfan</artifactId>
|
||||||
|
<version>${langchain4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-autoconfigure-processor</artifactId>
|
||||||
|
<version>${spring.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user