fix flyway depends bean

This commit is contained in:
Chuck1sn
2025-05-23 11:58:29 +08:00
parent 0e84f4be11
commit 43728ee733
7 changed files with 43 additions and 36 deletions

View File

@@ -1,23 +1,27 @@
package com.zl.mjga.config.ai; package com.zl.mjga.config.ai;
import com.zl.mjga.service.LlmService;
import dev.langchain4j.community.model.zhipu.ZhipuAiStreamingChatModel; import dev.langchain4j.community.model.zhipu.ZhipuAiStreamingChatModel;
import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel; import dev.langchain4j.model.openai.OpenAiStreamingChatModel;
import dev.langchain4j.service.AiServices; import dev.langchain4j.service.AiServices;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.jooq.generated.mjga.enums.LlmCodeEnum;
import org.jooq.generated.mjga.tables.pojos.AiLlmConfig;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
@Configuration @Configuration
@RequiredArgsConstructor @RequiredArgsConstructor
public class ChatModelConfig { public class ChatModelConfig {
private final DeepSeekConfiguration deepSeekConfiguration; private final LlmService llmService;
private final ZhiPuConfiguration zhiPuConfiguration;
private final PromptConfiguration promptConfiguration; private final PromptConfiguration promptConfiguration;
@Bean @Bean
public ZhipuAiStreamingChatModel zhipuChatModel() { @DependsOn("flywayInitializer")
public ZhipuAiStreamingChatModel zhipuChatModel(ZhiPuConfiguration zhiPuConfiguration) {
return ZhipuAiStreamingChatModel.builder() return ZhipuAiStreamingChatModel.builder()
.model(zhiPuConfiguration.getModelName()) .model(zhiPuConfiguration.getModelName())
.apiKey(zhiPuConfiguration.getApiKey()) .apiKey(zhiPuConfiguration.getApiKey())
@@ -27,7 +31,8 @@ public class ChatModelConfig {
} }
@Bean @Bean
public OpenAiStreamingChatModel deepSeekChatModel() { @DependsOn("flywayInitializer")
public OpenAiStreamingChatModel deepSeekChatModel(DeepSeekConfiguration deepSeekConfiguration) {
return OpenAiStreamingChatModel.builder() return OpenAiStreamingChatModel.builder()
.baseUrl(deepSeekConfiguration.getBaseUrl()) .baseUrl(deepSeekConfiguration.getBaseUrl())
.apiKey(deepSeekConfiguration.getApiKey()) .apiKey(deepSeekConfiguration.getApiKey())
@@ -36,6 +41,7 @@ public class ChatModelConfig {
} }
@Bean @Bean
@DependsOn("flywayInitializer")
public AiChatAssistant deepSeekChatAssistant(OpenAiStreamingChatModel deepSeekChatModel) { public AiChatAssistant deepSeekChatAssistant(OpenAiStreamingChatModel deepSeekChatModel) {
return AiServices.builder(AiChatAssistant.class) return AiServices.builder(AiChatAssistant.class)
.streamingChatModel(deepSeekChatModel) .streamingChatModel(deepSeekChatModel)
@@ -45,6 +51,7 @@ public class ChatModelConfig {
} }
@Bean @Bean
@DependsOn("flywayInitializer")
public AiChatAssistant zhiPuChatAssistant(ZhipuAiStreamingChatModel zhipuChatModel) { public AiChatAssistant zhiPuChatAssistant(ZhipuAiStreamingChatModel zhipuChatModel) {
return AiServices.builder(AiChatAssistant.class) return AiServices.builder(AiChatAssistant.class)
.streamingChatModel(zhipuChatModel) .streamingChatModel(zhipuChatModel)
@@ -52,4 +59,22 @@ public class ChatModelConfig {
.chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10))
.build(); .build();
} }
@Bean
@DependsOn("flywayInitializer")
public DeepSeekConfiguration deepSeekConfiguration() {
DeepSeekConfiguration deepSeekConfiguration = new DeepSeekConfiguration();
AiLlmConfig deepSeek = llmService.loadConfig(LlmCodeEnum.DEEP_SEEK);
deepSeekConfiguration.init(deepSeek);
return deepSeekConfiguration;
}
@Bean
@DependsOn("flywayInitializer")
public ZhiPuConfiguration zhiPuConfiguration() {
ZhiPuConfiguration zhiPuConfiguration = new ZhiPuConfiguration();
AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.ZHI_PU);
zhiPuConfiguration.init(aiLlmConfig);
return zhiPuConfiguration;
}
} }

View File

@@ -1,29 +1,18 @@
package com.zl.mjga.config.ai; package com.zl.mjga.config.ai;
import com.zl.mjga.service.LlmService;
import jakarta.annotation.PostConstruct;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.jooq.generated.default_schema.enums.LlmCodeEnum;
import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig;
import org.springframework.stereotype.Component;
@Data @Data
@Component
@RequiredArgsConstructor
public class DeepSeekConfiguration { public class DeepSeekConfiguration {
private String baseUrl; private String baseUrl;
private String apiKey; private String apiKey;
private String modelName; private String modelName;
private final LlmService llmService; public void init(AiLlmConfig config) {
this.baseUrl = config.getUrl();
@PostConstruct this.apiKey = config.getApiKey();
public void init() { this.modelName = config.getModelName();
AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.DEEP_SEEK);
baseUrl = aiLlmConfig.getUrl();
apiKey = aiLlmConfig.getApiKey();
modelName = aiLlmConfig.getModelName();
} }
} }

View File

@@ -1,9 +1,6 @@
package com.zl.mjga.config.ai; package com.zl.mjga.config.ai;
import com.zl.mjga.service.LlmService;
import jakarta.annotation.PostConstruct;
import lombok.Data; import lombok.Data;
import org.jooq.generated.default_schema.enums.LlmCodeEnum;
import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -15,13 +12,9 @@ public class ZhiPuConfiguration {
private String apiKey; private String apiKey;
private String modelName; private String modelName;
private final LlmService llmService; public void init(AiLlmConfig config) {
this.baseUrl = config.getUrl();
@PostConstruct this.apiKey = config.getApiKey();
public void init() { this.modelName = config.getModelName();
AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.ZHI_PU);
baseUrl = aiLlmConfig.getUrl();
apiKey = aiLlmConfig.getApiKey();
modelName = aiLlmConfig.getModelName();
} }
} }

View File

@@ -4,7 +4,7 @@ import com.zl.mjga.config.ai.AiChatAssistant;
import dev.langchain4j.service.TokenStream; import dev.langchain4j.service.TokenStream;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jooq.generated.default_schema.enums.LlmCodeEnum; import org.jooq.generated.mjga.enums.LlmCodeEnum;
import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jooq.Record; import org.jooq.Record;
import org.jooq.Result; import org.jooq.Result;
import org.jooq.generated.default_schema.enums.LlmCodeEnum; import org.jooq.generated.mjga.enums.LlmCodeEnum;
import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -66,7 +66,7 @@ CREATE TABLE mjga.user_position_map (
FOREIGN KEY (position_id) REFERENCES mjga.position(id) ON UPDATE NO ACTION ON DELETE RESTRICT FOREIGN KEY (position_id) REFERENCES mjga.position(id) ON UPDATE NO ACTION ON DELETE RESTRICT
); );
CREATE TYPE "llm_code_enum" AS ENUM ( CREATE TYPE mjga.llm_code_enum AS ENUM (
'DEEP_SEEK', 'DEEP_SEEK',
'ZHI_PU' 'ZHI_PU'
); );
@@ -75,7 +75,7 @@ CREATE TYPE "llm_code_enum" AS ENUM (
CREATE TABLE mjga.ai_llm_config ( CREATE TABLE mjga.ai_llm_config (
id BIGSERIAL NOT NULL UNIQUE, id BIGSERIAL NOT NULL UNIQUE,
name VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL UNIQUE,
code LLM_CODE_ENUM NOT NULL UNIQUE, code mjga.llm_code_enum NOT NULL UNIQUE,
model_name VARCHAR(255) NOT NULL, model_name VARCHAR(255) NOT NULL,
api_key VARCHAR(255) NOT NULL, api_key VARCHAR(255) NOT NULL,
url VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL,

View File

@@ -30,5 +30,5 @@ VALUES (1, 1),
INSERT INTO mjga.ai_llm_config (name,code,model_name, api_key, url, enable, priority) INSERT INTO mjga.ai_llm_config (name,code,model_name, api_key, url, enable, priority)
VALUES VALUES
('DeepSeek','DEEP_SEEK','deepseek-chat','', 'https://api.deepseek.com', false, 0), ('DeepSeek','DEEP_SEEK','deepseek-chat','your_api_key', 'https://api.deepseek.com', false, 0),
('智谱清言','ZHI_PU','glm-4-flash', '', 'https://open.bigmodel.cn/', false, 1); ('智谱清言','ZHI_PU','glm-4-flash', 'your_api_key', 'https://open.bigmodel.cn/', false, 1);