diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SenderExecutableAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SenderExecutableAction.java index 5451fcb467bd7..8110965b850c9 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SenderExecutableAction.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SenderExecutableAction.java @@ -18,7 +18,7 @@ import static org.elasticsearch.xpack.inference.external.action.ActionUtils.wrapFailuresInElasticsearchException; -public class SenderExecutableAction implements ExecutableAction { +public sealed class SenderExecutableAction implements ExecutableAction permits SingleInputSenderExecutableAction { private final Sender sender; private final RequestManager requestManager; diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SingleInputSenderExecutableAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SingleInputSenderExecutableAction.java index 5e39b3fa6a321..88cdb76e621da 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SingleInputSenderExecutableAction.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/SingleInputSenderExecutableAction.java @@ -18,7 +18,7 @@ import java.util.Objects; -public class SingleInputSenderExecutableAction extends SenderExecutableAction { +public final class SingleInputSenderExecutableAction extends SenderExecutableAction { private final String requestTypeForInputValidationError; public SingleInputSenderExecutableAction( diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchActionCreator.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchActionCreator.java index 70cc7fc7cd88f..22b7f50c43844 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchActionCreator.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchActionCreator.java @@ -8,8 +8,13 @@ package org.elasticsearch.xpack.inference.services.alibabacloudsearch.action; import org.elasticsearch.xpack.inference.external.action.ExecutableAction; +import org.elasticsearch.xpack.inference.external.action.SenderExecutableAction; +import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchEmbeddingsRequestManager; +import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchRerankRequestManager; +import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchSparseRequestManager; import org.elasticsearch.xpack.inference.external.http.sender.Sender; import org.elasticsearch.xpack.inference.services.ServiceComponents; +import org.elasticsearch.xpack.inference.services.alibabacloudsearch.AlibabaCloudSearchAccount; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.completion.AlibabaCloudSearchCompletionModel; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.embeddings.AlibabaCloudSearchEmbeddingsModel; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.rerank.AlibabaCloudSearchRerankModel; @@ -18,6 +23,8 @@ import java.util.Map; import java.util.Objects; +import static org.elasticsearch.xpack.inference.external.action.ActionUtils.constructFailedToSendRequestMessage; + /** * Provides a way to construct an {@link ExecutableAction} using the visitor pattern based on the alibaba cloud search model type. */ @@ -34,21 +41,29 @@ public AlibabaCloudSearchActionCreator(Sender sender, ServiceComponents serviceC public ExecutableAction create(AlibabaCloudSearchEmbeddingsModel model, Map taskSettings) { var overriddenModel = AlibabaCloudSearchEmbeddingsModel.of(model, taskSettings); - return new AlibabaCloudSearchEmbeddingsAction(sender, overriddenModel, serviceComponents); + var account = new AlibabaCloudSearchAccount(overriddenModel.getSecretSettings().apiKey()); + var failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search text embeddings"); + var requestCreator = AlibabaCloudSearchEmbeddingsRequestManager.of(account, overriddenModel, serviceComponents.threadPool()); + return new SenderExecutableAction(sender, requestCreator, failedToSendRequestErrorMessage); } @Override public ExecutableAction create(AlibabaCloudSearchSparseModel model, Map taskSettings) { var overriddenModel = AlibabaCloudSearchSparseModel.of(model, taskSettings); - - return new AlibabaCloudSearchSparseAction(sender, overriddenModel, serviceComponents); + var account = new AlibabaCloudSearchAccount(overriddenModel.getSecretSettings().apiKey()); + var failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search sparse embeddings"); + var requestCreator = AlibabaCloudSearchSparseRequestManager.of(account, overriddenModel, serviceComponents.threadPool()); + return new SenderExecutableAction(sender, requestCreator, failedToSendRequestErrorMessage); } @Override public ExecutableAction create(AlibabaCloudSearchRerankModel model, Map taskSettings) { var overriddenModel = AlibabaCloudSearchRerankModel.of(model, taskSettings); - return new AlibabaCloudSearchRerankAction(sender, overriddenModel, serviceComponents); + var account = new AlibabaCloudSearchAccount(overriddenModel.getSecretSettings().apiKey()); + var failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search rerank"); + var requestCreator = AlibabaCloudSearchRerankRequestManager.of(account, overriddenModel, serviceComponents.threadPool()); + return new SenderExecutableAction(sender, requestCreator, failedToSendRequestErrorMessage); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchCompletionAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchCompletionAction.java index 0abae2242a0a6..e7d516714fdaa 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchCompletionAction.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchCompletionAction.java @@ -7,8 +7,6 @@ package org.elasticsearch.xpack.inference.services.alibabacloudsearch.action; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.action.ActionListener; @@ -30,16 +28,14 @@ import static org.elasticsearch.xpack.inference.external.action.ActionUtils.createInternalServerError; import static org.elasticsearch.xpack.inference.external.action.ActionUtils.wrapFailuresInElasticsearchException; -public class AlibabaCloudSearchCompletionAction implements ExecutableAction { - private static final Logger logger = LogManager.getLogger(AlibabaCloudSearchCompletionAction.class); - +final class AlibabaCloudSearchCompletionAction implements ExecutableAction { private final AlibabaCloudSearchAccount account; private final AlibabaCloudSearchCompletionModel model; private final String failedToSendRequestErrorMessage; private final Sender sender; private final AlibabaCloudSearchCompletionRequestManager requestCreator; - public AlibabaCloudSearchCompletionAction(Sender sender, AlibabaCloudSearchCompletionModel model, ServiceComponents serviceComponents) { + AlibabaCloudSearchCompletionAction(Sender sender, AlibabaCloudSearchCompletionModel model, ServiceComponents serviceComponents) { this.model = Objects.requireNonNull(model); this.sender = Objects.requireNonNull(sender); this.account = new AlibabaCloudSearchAccount(this.model.getSecretSettings().apiKey()); diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchEmbeddingsAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchEmbeddingsAction.java deleted file mode 100644 index 18ae212512e2c..0000000000000 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchEmbeddingsAction.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.inference.services.alibabacloudsearch.action; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.core.TimeValue; -import org.elasticsearch.inference.InferenceServiceResults; -import org.elasticsearch.xpack.inference.external.action.ExecutableAction; -import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchEmbeddingsRequestManager; -import org.elasticsearch.xpack.inference.external.http.sender.InferenceInputs; -import org.elasticsearch.xpack.inference.external.http.sender.Sender; -import org.elasticsearch.xpack.inference.services.ServiceComponents; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.AlibabaCloudSearchAccount; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.embeddings.AlibabaCloudSearchEmbeddingsModel; - -import java.util.Objects; - -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.constructFailedToSendRequestMessage; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.createInternalServerError; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.wrapFailuresInElasticsearchException; - -public class AlibabaCloudSearchEmbeddingsAction implements ExecutableAction { - private final AlibabaCloudSearchAccount account; - private final AlibabaCloudSearchEmbeddingsModel model; - private final String failedToSendRequestErrorMessage; - private final Sender sender; - private final AlibabaCloudSearchEmbeddingsRequestManager requestCreator; - - public AlibabaCloudSearchEmbeddingsAction(Sender sender, AlibabaCloudSearchEmbeddingsModel model, ServiceComponents serviceComponents) { - this.model = Objects.requireNonNull(model); - this.sender = Objects.requireNonNull(sender); - this.account = new AlibabaCloudSearchAccount(this.model.getSecretSettings().apiKey()); - this.failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search text embeddings"); - this.requestCreator = AlibabaCloudSearchEmbeddingsRequestManager.of(account, model, serviceComponents.threadPool()); - } - - @Override - public void execute(InferenceInputs inferenceInputs, TimeValue timeout, ActionListener listener) { - try { - ActionListener wrappedListener = wrapFailuresInElasticsearchException( - failedToSendRequestErrorMessage, - listener - ); - sender.send(requestCreator, inferenceInputs, timeout, wrappedListener); - } catch (ElasticsearchException e) { - listener.onFailure(e); - } catch (Exception e) { - listener.onFailure(createInternalServerError(e, failedToSendRequestErrorMessage)); - } - } -} diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchRerankAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchRerankAction.java deleted file mode 100644 index b6598639c6d68..0000000000000 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchRerankAction.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.inference.services.alibabacloudsearch.action; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.core.TimeValue; -import org.elasticsearch.inference.InferenceServiceResults; -import org.elasticsearch.xpack.inference.external.action.ExecutableAction; -import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchRerankRequestManager; -import org.elasticsearch.xpack.inference.external.http.sender.InferenceInputs; -import org.elasticsearch.xpack.inference.external.http.sender.Sender; -import org.elasticsearch.xpack.inference.services.ServiceComponents; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.AlibabaCloudSearchAccount; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.rerank.AlibabaCloudSearchRerankModel; - -import java.util.Objects; - -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.constructFailedToSendRequestMessage; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.createInternalServerError; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.wrapFailuresInElasticsearchException; - -public class AlibabaCloudSearchRerankAction implements ExecutableAction { - private static final Logger logger = LogManager.getLogger(AlibabaCloudSearchRerankAction.class); - - private final AlibabaCloudSearchAccount account; - private final AlibabaCloudSearchRerankModel model; - private final String failedToSendRequestErrorMessage; - private final Sender sender; - private final AlibabaCloudSearchRerankRequestManager requestCreator; - - public AlibabaCloudSearchRerankAction(Sender sender, AlibabaCloudSearchRerankModel model, ServiceComponents serviceComponents) { - this.model = Objects.requireNonNull(model); - this.account = new AlibabaCloudSearchAccount(this.model.getSecretSettings().apiKey()); - this.failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search rerank"); - this.sender = Objects.requireNonNull(sender); - this.requestCreator = AlibabaCloudSearchRerankRequestManager.of(account, model, serviceComponents.threadPool()); - } - - @Override - public void execute(InferenceInputs inferenceInputs, TimeValue timeout, ActionListener listener) { - try { - ActionListener wrappedListener = wrapFailuresInElasticsearchException( - failedToSendRequestErrorMessage, - listener - ); - sender.send(requestCreator, inferenceInputs, timeout, wrappedListener); - } catch (ElasticsearchException e) { - listener.onFailure(e); - } catch (Exception e) { - listener.onFailure(createInternalServerError(e, failedToSendRequestErrorMessage)); - } - } -} diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchSparseAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchSparseAction.java deleted file mode 100644 index 580ffb0677c8d..0000000000000 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/action/AlibabaCloudSearchSparseAction.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.inference.services.alibabacloudsearch.action; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.core.TimeValue; -import org.elasticsearch.inference.InferenceServiceResults; -import org.elasticsearch.xpack.inference.external.action.ExecutableAction; -import org.elasticsearch.xpack.inference.external.http.sender.AlibabaCloudSearchSparseRequestManager; -import org.elasticsearch.xpack.inference.external.http.sender.InferenceInputs; -import org.elasticsearch.xpack.inference.external.http.sender.Sender; -import org.elasticsearch.xpack.inference.services.ServiceComponents; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.AlibabaCloudSearchAccount; -import org.elasticsearch.xpack.inference.services.alibabacloudsearch.sparse.AlibabaCloudSearchSparseModel; - -import java.util.Objects; - -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.constructFailedToSendRequestMessage; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.createInternalServerError; -import static org.elasticsearch.xpack.inference.external.action.ActionUtils.wrapFailuresInElasticsearchException; - -public class AlibabaCloudSearchSparseAction implements ExecutableAction { - private static final Logger logger = LogManager.getLogger(AlibabaCloudSearchSparseAction.class); - - private final AlibabaCloudSearchAccount account; - private final AlibabaCloudSearchSparseModel model; - private final String failedToSendRequestErrorMessage; - private final Sender sender; - private final AlibabaCloudSearchSparseRequestManager requestCreator; - - public AlibabaCloudSearchSparseAction(Sender sender, AlibabaCloudSearchSparseModel model, ServiceComponents serviceComponents) { - this.model = Objects.requireNonNull(model); - this.account = new AlibabaCloudSearchAccount(this.model.getSecretSettings().apiKey()); - this.failedToSendRequestErrorMessage = constructFailedToSendRequestMessage("AlibabaCloud Search sparse embeddings"); - this.sender = Objects.requireNonNull(sender); - requestCreator = AlibabaCloudSearchSparseRequestManager.of(account, model, serviceComponents.threadPool()); - } - - @Override - public void execute(InferenceInputs inferenceInputs, TimeValue timeout, ActionListener listener) { - try { - ActionListener wrappedListener = wrapFailuresInElasticsearchException( - failedToSendRequestErrorMessage, - listener - ); - sender.send(requestCreator, inferenceInputs, timeout, wrappedListener); - } catch (ElasticsearchException e) { - listener.onFailure(e); - } catch (Exception e) { - listener.onFailure(createInternalServerError(e, failedToSendRequestErrorMessage)); - } - } -}