From dfe4dea436fde3f5f17876fc167f0d8683476451 Mon Sep 17 00:00:00 2001 From: Dmytro Skarzhynets Date: Fri, 27 Jun 2025 19:16:13 +0300 Subject: [PATCH] AI rule node: add frequency penalty for the models that support it --- .../service/ai/Langchain4jChatModelConfigurerImpl.java | 8 ++++++++ .../common/data/ai/model/chat/AzureOpenAiChatModel.java | 1 + .../common/data/ai/model/chat/GitHubModelsChatModel.java | 1 + .../data/ai/model/chat/GoogleAiGeminiChatModel.java | 1 + .../data/ai/model/chat/GoogleVertexAiGeminiChatModel.java | 1 + .../common/data/ai/model/chat/MistralAiChatModel.java | 1 + .../server/common/data/ai/model/chat/OpenAiChatModel.java | 1 + 7 files changed, 14 insertions(+) diff --git a/application/src/main/java/org/thingsboard/server/service/ai/Langchain4jChatModelConfigurerImpl.java b/application/src/main/java/org/thingsboard/server/service/ai/Langchain4jChatModelConfigurerImpl.java index 2a9c792b32..f7e5203e1b 100644 --- a/application/src/main/java/org/thingsboard/server/service/ai/Langchain4jChatModelConfigurerImpl.java +++ b/application/src/main/java/org/thingsboard/server/service/ai/Langchain4jChatModelConfigurerImpl.java @@ -61,6 +61,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .modelName(modelConfig.modelId()) .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) + .frequencyPenalty(modelConfig.frequencyPenalty()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -74,6 +75,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .deploymentName(modelConfig.modelId()) .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) + .frequencyPenalty(modelConfig.frequencyPenalty()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -88,6 +90,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) .topK(modelConfig.topK()) + .frequencyPenalty(modelConfig.frequencyPenalty()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -153,6 +156,9 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur if (modelConfig.topK() != null) { generationConfigBuilder.setTopK(modelConfig.topK()); } + if (modelConfig.frequencyPenalty() != null) { + generationConfigBuilder.setFrequencyPenalty(modelConfig.frequencyPenalty().floatValue()); + } var generationConfig = generationConfigBuilder.build(); // construct generative model instance @@ -177,6 +183,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .modelName(modelConfig.modelId()) .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) + .frequencyPenalty(modelConfig.frequencyPenalty()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -232,6 +239,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .modelName(modelConfig.modelId()) .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) + .frequencyPenalty(modelConfig.frequencyPenalty()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AzureOpenAiChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AzureOpenAiChatModel.java index 6d54975748..97f2d0c3ac 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AzureOpenAiChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AzureOpenAiChatModel.java @@ -31,6 +31,7 @@ public record AzureOpenAiChatModel( String modelId, Double temperature, Double topP, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GitHubModelsChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GitHubModelsChatModel.java index 075473f111..3730c9aab9 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GitHubModelsChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GitHubModelsChatModel.java @@ -31,6 +31,7 @@ public record GitHubModelsChatModel( String modelId, Double temperature, Double topP, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleAiGeminiChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleAiGeminiChatModel.java index e5d282ee50..a0e8ef04ee 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleAiGeminiChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleAiGeminiChatModel.java @@ -32,6 +32,7 @@ public record GoogleAiGeminiChatModel( Double temperature, Double topP, Integer topK, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleVertexAiGeminiChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleVertexAiGeminiChatModel.java index 2f5fac23c2..7acf566b46 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleVertexAiGeminiChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/GoogleVertexAiGeminiChatModel.java @@ -32,6 +32,7 @@ public record GoogleVertexAiGeminiChatModel( Double temperature, Double topP, Integer topK, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/MistralAiChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/MistralAiChatModel.java index b76ce500f4..04c5e96943 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/MistralAiChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/MistralAiChatModel.java @@ -31,6 +31,7 @@ public record MistralAiChatModel( String modelId, Double temperature, Double topP, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/OpenAiChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/OpenAiChatModel.java index d066ee4d50..497650fe3c 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/OpenAiChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/OpenAiChatModel.java @@ -31,6 +31,7 @@ public record OpenAiChatModel( String modelId, Double temperature, Double topP, + Double frequencyPenalty, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {}