diff --git a/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/ModelConfig.java b/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/ModelConfig.java index fc47fb5bd..8f9e2db24 100644 --- a/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/ModelConfig.java +++ b/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/ModelConfig.java @@ -63,6 +63,7 @@ public class ModelConfig implements RequestBodyConvertible, RequestHeaderConvert this.connectTimeout = connectTimeout; this.readTimeout = readTimeout; this.headersConfig = headersConfig; + checkRequiredFields(); } protected ModelConfig(Builder builder) { @@ -74,6 +75,17 @@ public class ModelConfig implements RequestBodyConvertible, RequestHeaderConvert this.connectTimeout = builder.connectTimeout; this.readTimeout = builder.readTimeout; this.headersConfig.putAll(builder.headersConfig); + checkRequiredFields(); + } + + /** + * 检查必填字段 + */ + protected void checkRequiredFields() { + Objects.requireNonNull(this.apiUrl, "API URL must not be null"); + Objects.requireNonNull(this.endPoint, "End Point must not be null"); + Objects.requireNonNull(this.provider, "Provider must not be null"); + Objects.requireNonNull(this.model, "Model must not be null"); } @Override @@ -231,13 +243,6 @@ public class ModelConfig implements RequestBodyConvertible, RequestHeaderConvert return self(); } - protected void checkRequiredFields() { - Objects.requireNonNull(apiUrl, "API URL must not be null"); - Objects.requireNonNull(endPoint, "End Point must not be null"); - Objects.requireNonNull(provider, "Provider must not be null"); - Objects.requireNonNull(model, "Model must not be null"); - } - public abstract ModelConfig build(); private static class BuilderImpl extends Builder { @@ -249,7 +254,6 @@ public class ModelConfig implements RequestBodyConvertible, RequestHeaderConvert @Override public ModelConfig build() { - checkRequiredFields(); return new ModelConfig(this); } } diff --git a/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/chat/entity/ChatConfig.java b/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/chat/entity/ChatConfig.java index a592ea02f..3225d2846 100644 --- a/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/chat/entity/ChatConfig.java +++ b/liteflow-ai/liteflow-ai-engine/src/main/java/com/yomahub/liteflow/ai/engine/model/chat/entity/ChatConfig.java @@ -69,7 +69,6 @@ public class ChatConfig extends ModelConfig { @Override public ChatConfig build() { - checkRequiredFields(); return new ChatConfig(this); } } diff --git a/liteflow-ai/liteflow-ai-model/liteflow-ai-dashscope/src/main/java/com/yomahub/liteflow/ai/model/dashscope/model/chat/DashScopeChatConfig.java b/liteflow-ai/liteflow-ai-model/liteflow-ai-dashscope/src/main/java/com/yomahub/liteflow/ai/model/dashscope/model/chat/DashScopeChatConfig.java index 01da9beb5..e8ccff937 100644 --- a/liteflow-ai/liteflow-ai-model/liteflow-ai-dashscope/src/main/java/com/yomahub/liteflow/ai/model/dashscope/model/chat/DashScopeChatConfig.java +++ b/liteflow-ai/liteflow-ai-model/liteflow-ai-dashscope/src/main/java/com/yomahub/liteflow/ai/model/dashscope/model/chat/DashScopeChatConfig.java @@ -4,6 +4,7 @@ import com.yomahub.liteflow.ai.engine.model.chat.entity.ChatConfig; import java.time.Duration; import java.util.Map; +import java.util.Objects; /** * DashScope 聊天配置类 @@ -36,6 +37,12 @@ public class DashScopeChatConfig extends ChatConfig { super(builder); } + @Override + protected void checkRequiredFields() { + super.checkRequiredFields(); + Objects.requireNonNull(this.apiKey, "API Key must not be null, please set it via configuration: {liteflow.ai.dashscope.api-key}"); + } + public static Builder builder() { return new Builder(); } @@ -49,7 +56,6 @@ public class DashScopeChatConfig extends ChatConfig { @Override public DashScopeChatConfig build() { - checkRequiredFields(); return new DashScopeChatConfig(this); } } diff --git a/liteflow-ai/liteflow-ai-model/liteflow-ai-ollama/src/main/java/com/yomahub/liteflow/ai/model/ollama/model/chat/OllamaChatConfig.java b/liteflow-ai/liteflow-ai-model/liteflow-ai-ollama/src/main/java/com/yomahub/liteflow/ai/model/ollama/model/chat/OllamaChatConfig.java index fe144acc0..753c03979 100644 --- a/liteflow-ai/liteflow-ai-model/liteflow-ai-ollama/src/main/java/com/yomahub/liteflow/ai/model/ollama/model/chat/OllamaChatConfig.java +++ b/liteflow-ai/liteflow-ai-model/liteflow-ai-ollama/src/main/java/com/yomahub/liteflow/ai/model/ollama/model/chat/OllamaChatConfig.java @@ -49,7 +49,6 @@ public class OllamaChatConfig extends ChatConfig { @Override public OllamaChatConfig build() { - checkRequiredFields(); return new OllamaChatConfig(this); } } diff --git a/liteflow-ai/liteflow-ai-model/liteflow-ai-openai/src/main/java/com/yomahub/liteflow/ai/model/openai/model/chat/OpenAIChatConfig.java b/liteflow-ai/liteflow-ai-model/liteflow-ai-openai/src/main/java/com/yomahub/liteflow/ai/model/openai/model/chat/OpenAIChatConfig.java index a43bd329e..0b29d57b7 100644 --- a/liteflow-ai/liteflow-ai-model/liteflow-ai-openai/src/main/java/com/yomahub/liteflow/ai/model/openai/model/chat/OpenAIChatConfig.java +++ b/liteflow-ai/liteflow-ai-model/liteflow-ai-openai/src/main/java/com/yomahub/liteflow/ai/model/openai/model/chat/OpenAIChatConfig.java @@ -4,6 +4,7 @@ import com.yomahub.liteflow.ai.engine.model.chat.entity.ChatConfig; import java.time.Duration; import java.util.Map; +import java.util.Objects; /** * OpenAI 聊天配置类 @@ -32,6 +33,12 @@ public class OpenAIChatConfig extends ChatConfig { super(apiUrl, endPoint, apiKey, provider, model, connectTimeout, readTimeout, headersConfig, autoToolCallEnabled); } + @Override + protected void checkRequiredFields() { + super.checkRequiredFields(); + Objects.requireNonNull(this.apiKey, "API Key must not be null, please set it via configuration: {liteflow.ai.openai.api-key}"); + } + public OpenAIChatConfig(Builder builder) { super(builder); } @@ -49,7 +56,6 @@ public class OpenAIChatConfig extends ChatConfig { @Override public OpenAIChatConfig build() { - checkRequiredFields(); return new OpenAIChatConfig(this); } }