Browse Source
AI rule node: serialize model type to JSON
pull/13371/head
Dmytro Skarzhynets
1 year ago
No known key found for this signature in database
GPG Key ID: 2B51652F224037DF
9 changed files with
26 additions and
8 deletions
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/AiModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AmazonBedrockChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AnthropicChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AzureOpenAiChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GitHubModelsChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleAiGeminiChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleVertexAiGeminiChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/MistralAiChatModel.java
-
common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/OpenAiChatModel.java
|
|
|
@ -15,6 +15,7 @@ |
|
|
|
*/ |
|
|
|
package org.thingsboard.server.common.data.ai.model; |
|
|
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty; |
|
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
|
|
|
import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.AiProviderConfig; |
|
|
|
@ -29,6 +30,7 @@ public interface AiModel<C extends AiModelConfig<C>> { |
|
|
|
|
|
|
|
AiProviderConfig providerConfig(); |
|
|
|
|
|
|
|
@JsonProperty("modelType") |
|
|
|
AiModelType modelType(); |
|
|
|
|
|
|
|
C modelConfig(); |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.AmazonBedrockProviderConfig; |
|
|
|
|
|
|
|
public record AmazonBedrockChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
AmazonBedrockProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<AmazonBedrockChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record AmazonBedrockChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public AmazonBedrockChatModel withModelConfig(AmazonBedrockChatModel.Config config) { |
|
|
|
return new AmazonBedrockChatModel(providerConfig, config); |
|
|
|
return new AmazonBedrockChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.AnthropicProviderConfig; |
|
|
|
|
|
|
|
public record AnthropicChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
AnthropicProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<AnthropicChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record AnthropicChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public AnthropicChatModel withModelConfig(AnthropicChatModel.Config config) { |
|
|
|
return new AnthropicChatModel(providerConfig, config); |
|
|
|
return new AnthropicChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.AzureOpenAiProviderConfig; |
|
|
|
|
|
|
|
public record AzureOpenAiChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
AzureOpenAiProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<AzureOpenAiChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record AzureOpenAiChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public AzureOpenAiChatModel withModelConfig(AzureOpenAiChatModel.Config config) { |
|
|
|
return new AzureOpenAiChatModel(providerConfig, config); |
|
|
|
return new AzureOpenAiChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.GithubModelsProviderConfig; |
|
|
|
|
|
|
|
public record GitHubModelsChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
GithubModelsProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<GitHubModelsChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record GitHubModelsChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public GitHubModelsChatModel withModelConfig(GitHubModelsChatModel.Config config) { |
|
|
|
return new GitHubModelsChatModel(providerConfig, config); |
|
|
|
return new GitHubModelsChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.GoogleAiGeminiProviderConfig; |
|
|
|
|
|
|
|
public record GoogleAiGeminiChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
GoogleAiGeminiProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<GoogleAiGeminiChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record GoogleAiGeminiChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public GoogleAiGeminiChatModel withModelConfig(GoogleAiGeminiChatModel.Config config) { |
|
|
|
return new GoogleAiGeminiChatModel(providerConfig, config); |
|
|
|
return new GoogleAiGeminiChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.GoogleVertexAiGeminiProviderConfig; |
|
|
|
|
|
|
|
public record GoogleVertexAiGeminiChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
GoogleVertexAiGeminiProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<GoogleVertexAiGeminiChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record GoogleVertexAiGeminiChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public GoogleVertexAiGeminiChatModel withModelConfig(GoogleVertexAiGeminiChatModel.Config config) { |
|
|
|
return new GoogleVertexAiGeminiChatModel(providerConfig, config); |
|
|
|
return new GoogleVertexAiGeminiChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.MistralAiProviderConfig; |
|
|
|
|
|
|
|
public record MistralAiChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
MistralAiProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<MistralAiChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record MistralAiChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public MistralAiChatModel withModelConfig(Config config) { |
|
|
|
return new MistralAiChatModel(providerConfig, config); |
|
|
|
return new MistralAiChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -16,9 +16,11 @@ |
|
|
|
package org.thingsboard.server.common.data.ai.model.chat; |
|
|
|
|
|
|
|
import dev.langchain4j.model.chat.ChatModel; |
|
|
|
import org.thingsboard.server.common.data.ai.model.AiModelType; |
|
|
|
import org.thingsboard.server.common.data.ai.provider.OpenAiProviderConfig; |
|
|
|
|
|
|
|
public record OpenAiChatModel( |
|
|
|
AiModelType modelType, |
|
|
|
OpenAiProviderConfig providerConfig, |
|
|
|
Config modelConfig |
|
|
|
) implements AiChatModel<OpenAiChatModel.Config> { |
|
|
|
@ -54,7 +56,7 @@ public record OpenAiChatModel( |
|
|
|
|
|
|
|
@Override |
|
|
|
public OpenAiChatModel withModelConfig(OpenAiChatModel.Config config) { |
|
|
|
return new OpenAiChatModel(providerConfig, config); |
|
|
|
return new OpenAiChatModel(modelType, providerConfig, config); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|