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 fdcea9df18..30942beda7 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 @@ -64,6 +64,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .frequencyPenalty(modelConfig.frequencyPenalty()) .presencePenalty(modelConfig.presencePenalty()) .maxTokens(modelConfig.maxOutputTokens()) + .stop(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -80,6 +81,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .frequencyPenalty(modelConfig.frequencyPenalty()) .presencePenalty(modelConfig.presencePenalty()) .maxTokens(modelConfig.maxOutputTokens()) + .stop(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -97,6 +99,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .frequencyPenalty(modelConfig.frequencyPenalty()) .presencePenalty(modelConfig.presencePenalty()) .maxOutputTokens(modelConfig.maxOutputTokens()) + .stopSequences(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -171,6 +174,9 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur if (modelConfig.maxOutputTokens() != null) { generationConfigBuilder.setMaxOutputTokens(modelConfig.maxOutputTokens()); } + if (modelConfig.stopSequences() != null) { + generationConfigBuilder.addAllStopSequences(modelConfig.stopSequences()); + } var generationConfig = generationConfigBuilder.build(); // construct generative model instance @@ -198,6 +204,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .frequencyPenalty(modelConfig.frequencyPenalty()) .presencePenalty(modelConfig.presencePenalty()) .maxTokens(modelConfig.maxOutputTokens()) + .stopSequences(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -213,6 +220,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .topP(modelConfig.topP()) .topK(modelConfig.topK()) .maxTokens(modelConfig.maxOutputTokens()) + .stopSequences(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); @@ -236,6 +244,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .temperature(modelConfig.temperature()) .topP(modelConfig.topP()) .maxOutputTokens(modelConfig.maxOutputTokens()) + .stopSequences(modelConfig.stopSequences()) .build(); return BedrockChatModel.builder() @@ -258,6 +267,7 @@ class Langchain4jChatModelConfigurerImpl implements Langchain4jChatModelConfigur .frequencyPenalty(modelConfig.frequencyPenalty()) .presencePenalty(modelConfig.presencePenalty()) .maxTokens(modelConfig.maxOutputTokens()) + .stop(modelConfig.stopSequences()) .timeout(toDuration(modelConfig.timeoutSeconds())) .maxRetries(modelConfig.maxRetries()) .build(); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AmazonBedrockChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AmazonBedrockChatModel.java index cd4a27326b..422f646f8f 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AmazonBedrockChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AmazonBedrockChatModel.java @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.AmazonBedrockProviderConfig; +import java.util.List; + public record AmazonBedrockChatModel( AiModelType modelType, AmazonBedrockProviderConfig providerConfig, @@ -32,6 +34,7 @@ public record AmazonBedrockChatModel( Double temperature, Double topP, Integer maxOutputTokens, + List stopSequences, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AnthropicChatModel.java b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AnthropicChatModel.java index eff282645a..3258229372 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AnthropicChatModel.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ai/model/chat/AnthropicChatModel.java @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.AnthropicProviderConfig; +import java.util.List; + public record AnthropicChatModel( AiModelType modelType, AnthropicProviderConfig providerConfig, @@ -33,6 +35,7 @@ public record AnthropicChatModel( Double topP, Integer topK, Integer maxOutputTokens, + List stopSequences, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {} 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 ff59f042c6..2e783d26d1 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.AzureOpenAiProviderConfig; +import java.util.List; + public record AzureOpenAiChatModel( AiModelType modelType, AzureOpenAiProviderConfig providerConfig, @@ -34,6 +36,7 @@ public record AzureOpenAiChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, 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 684c8133b7..cc981cc5c5 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.GithubModelsProviderConfig; +import java.util.List; + public record GitHubModelsChatModel( AiModelType modelType, GithubModelsProviderConfig providerConfig, @@ -34,6 +36,7 @@ public record GitHubModelsChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, 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 7618032837..e5fba391b0 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.GoogleAiGeminiProviderConfig; +import java.util.List; + public record GoogleAiGeminiChatModel( AiModelType modelType, GoogleAiGeminiProviderConfig providerConfig, @@ -35,6 +37,7 @@ public record GoogleAiGeminiChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, 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 8755760fe6..f0e5834d54 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.GoogleVertexAiGeminiProviderConfig; +import java.util.List; + public record GoogleVertexAiGeminiChatModel( AiModelType modelType, GoogleVertexAiGeminiProviderConfig providerConfig, @@ -35,6 +37,7 @@ public record GoogleVertexAiGeminiChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, 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 c896b2c158..ac1d644dcc 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.MistralAiProviderConfig; +import java.util.List; + public record MistralAiChatModel( AiModelType modelType, MistralAiProviderConfig providerConfig, @@ -34,6 +36,7 @@ public record MistralAiChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, 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 435e543595..8a5556b309 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 @@ -20,6 +20,8 @@ import lombok.With; import org.thingsboard.server.common.data.ai.model.AiModelType; import org.thingsboard.server.common.data.ai.provider.OpenAiProviderConfig; +import java.util.List; + public record OpenAiChatModel( AiModelType modelType, OpenAiProviderConfig providerConfig, @@ -34,6 +36,7 @@ public record OpenAiChatModel( Double frequencyPenalty, Double presencePenalty, Integer maxOutputTokens, + List stopSequences, Integer timeoutSeconds, Integer maxRetries ) implements AiChatModelConfig {}