diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java index c3f991a8b4e1e..1db742a2bdc08 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.master.AcknowledgedRequest; import org.elasticsearch.action.support.master.AcknowledgedResponse; @@ -50,13 +49,8 @@ public Request(StreamInput in) throws IOException { super(in); this.inferenceEndpointId = in.readString(); this.taskType = TaskType.fromStream(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - this.forceDelete = Boolean.TRUE.equals(in.readOptionalBoolean()); - this.dryRun = Boolean.TRUE.equals(in.readOptionalBoolean()); - } else { - this.forceDelete = false; - this.dryRun = false; - } + this.forceDelete = Boolean.TRUE.equals(in.readOptionalBoolean()); + this.dryRun = Boolean.TRUE.equals(in.readOptionalBoolean()); } public String getInferenceEndpointId() { @@ -80,10 +74,8 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(inferenceEndpointId); taskType.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeOptionalBoolean(forceDelete); - out.writeOptionalBoolean(dryRun); - } + out.writeOptionalBoolean(forceDelete); + out.writeOptionalBoolean(dryRun); } @Override @@ -121,32 +113,17 @@ public Response(boolean acknowledged, Set pipelineIds, Set seman public Response(StreamInput in) throws IOException { super(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - pipelineIds = in.readCollectionAsSet(StreamInput::readString); - } else { - pipelineIds = Set.of(); - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - indexes = in.readCollectionAsSet(StreamInput::readString); - dryRunMessage = in.readOptionalString(); - } else { - indexes = Set.of(); - dryRunMessage = null; - } - + pipelineIds = in.readCollectionAsSet(StreamInput::readString); + indexes = in.readCollectionAsSet(StreamInput::readString); + dryRunMessage = in.readOptionalString(); } @Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeCollection(pipelineIds, StreamOutput::writeString); - } - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeCollection(indexes, StreamOutput::writeString); - out.writeOptionalString(dryRunMessage); - } + out.writeCollection(pipelineIds, StreamOutput::writeString); + out.writeCollection(indexes, StreamOutput::writeString); + out.writeOptionalString(dryRunMessage); } @Override diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java index 8bf264024d119..3bfaa94ecfdf1 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.master.AcknowledgedRequest; @@ -19,7 +18,6 @@ import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -59,11 +57,7 @@ public Request(StreamInput in) throws IOException { super(in); this.inferenceEntityId = in.readString(); this.taskType = TaskType.fromStream(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - this.persistDefaultConfig = in.readBoolean(); - } else { - this.persistDefaultConfig = PERSIST_DEFAULT_CONFIGS; - } + this.persistDefaultConfig = in.readBoolean(); } public String getInferenceEntityId() { @@ -83,9 +77,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(inferenceEntityId); taskType.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeBoolean(this.persistDefaultConfig); - } + out.writeBoolean(this.persistDefaultConfig); } @Override @@ -113,12 +105,7 @@ public Response(List endpoints) { } public Response(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - endpoints = in.readCollectionAsList(ModelConfigurations::new); - } else { - endpoints = new ArrayList<>(); - endpoints.add(new ModelConfigurations(in)); - } + endpoints = in.readCollectionAsList(ModelConfigurations::new); } public List getEndpoints() { @@ -127,11 +114,7 @@ public List getEndpoints() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeCollection(endpoints); - } else { - endpoints.get(0).writeTo(out); - } + out.writeCollection(endpoints); } @Override diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java index c3066a56447c9..bc61fa8f9c77d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java @@ -7,9 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; @@ -19,23 +17,16 @@ import org.elasticsearch.common.xcontent.ChunkedToXContentHelper; import org.elasticsearch.common.xcontent.ChunkedToXContentObject; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.inference.InferenceResults; import org.elasticsearch.inference.InferenceServiceResults; import org.elasticsearch.inference.InputType; import org.elasticsearch.inference.TaskType; -import org.elasticsearch.rest.RestStatus; import org.elasticsearch.xcontent.ObjectParser; import org.elasticsearch.xcontent.ParseField; import org.elasticsearch.xcontent.ToXContent; import org.elasticsearch.xcontent.XContentParser; import org.elasticsearch.xpack.core.inference.InferenceContext; -import org.elasticsearch.xpack.core.inference.results.LegacyTextEmbeddingResults; -import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResults; -import org.elasticsearch.xpack.core.ml.inference.results.TextExpansionResults; import java.io.IOException; -import java.util.ArrayList; -import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -79,12 +70,6 @@ public static Builder builder(String inferenceEntityId, TaskType taskType) { PARSER.declareString(Builder::setInferenceTimeout, TIMEOUT); } - private static final EnumSet validEnumsBeforeUnspecifiedAdded = EnumSet.of(InputType.INGEST, InputType.SEARCH); - private static final EnumSet validEnumsBeforeClassificationClusteringAdded = EnumSet.range( - InputType.INGEST, - InputType.UNSPECIFIED - ); - public static Builder parseRequest(String inferenceEntityId, TaskType taskType, InferenceContext context, XContentParser parser) throws IOException { Request.Builder builder = PARSER.apply(parser, null); @@ -164,25 +149,11 @@ public Request(StreamInput in) throws IOException { super(in); this.taskType = TaskType.fromStream(in); this.inferenceEntityId = in.readString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - this.input = in.readStringCollectionAsList(); - } else { - this.input = List.of(in.readString()); - } + this.input = in.readStringCollectionAsList(); this.taskSettings = in.readGenericMap(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - this.inputType = in.readEnum(InputType.class); - } else { - this.inputType = InputType.UNSPECIFIED; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - this.query = in.readOptionalString(); - this.inferenceTimeout = in.readTimeValue(); - } else { - this.query = null; - this.inferenceTimeout = DEFAULT_TIMEOUT; - } + this.inputType = in.readEnum(InputType.class); + this.query = in.readOptionalString(); + this.inferenceTimeout = in.readTimeValue(); if (in.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { this.returnDocuments = in.readOptionalBoolean(); @@ -298,21 +269,11 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); taskType.writeTo(out); out.writeString(inferenceEntityId); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeStringCollection(input); - } else { - out.writeString(input.get(0)); - } + out.writeStringCollection(input); out.writeGenericMap(taskSettings); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeEnum(getInputTypeToWrite(inputType, out.getTransportVersion())); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - out.writeOptionalString(query); - out.writeTimeValue(inferenceTimeout); - } + out.writeEnum(inputType); + out.writeOptionalString(query); + out.writeTimeValue(inferenceTimeout); if (out.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { out.writeOptionalBoolean(returnDocuments); @@ -320,19 +281,6 @@ public void writeTo(StreamOutput out) throws IOException { } } - // default for easier testing - static InputType getInputTypeToWrite(InputType inputType, TransportVersion version) { - if (version.before(TransportVersions.V_8_13_0)) { - if (validEnumsBeforeUnspecifiedAdded.contains(inputType) == false) { - return InputType.INGEST; - } else if (validEnumsBeforeClassificationClusteringAdded.contains(inputType) == false) { - return InputType.UNSPECIFIED; - } - } - - return inputType; - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -509,65 +457,12 @@ public Response(InferenceServiceResults results, Flow.Publisher parsedResults) { - if (parsedResults.isEmpty()) { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, expected a non-empty list, please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - - if (parsedResults.get(0) instanceof LegacyTextEmbeddingResults openaiResults) { - if (parsedResults.size() > 1) { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, malformed text embedding result," - + " please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - - return openaiResults.transformToTextEmbeddingResults(); - } else if (parsedResults.get(0) instanceof TextExpansionResults) { - return transformToSparseEmbeddingResult(parsedResults); - } else { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, unknown embedding type received," - + " please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - } - - private static SparseEmbeddingResults transformToSparseEmbeddingResult(List parsedResults) { - List textExpansionResults = new ArrayList<>(parsedResults.size()); - - for (InferenceResults result : parsedResults) { - if (result instanceof TextExpansionResults textExpansion) { - textExpansionResults.add(textExpansion); - } else { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - } - - return SparseEmbeddingResults.of(textExpansionResults); - } - public InferenceServiceResults getResults() { return results; } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java deleted file mode 100644 index 60bbeb624b532..0000000000000 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java +++ /dev/null @@ -1,165 +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. - * - * this file was contributed to by a generative AI - */ - -package org.elasticsearch.xpack.core.inference.results; - -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.inference.InferenceResults; -import org.elasticsearch.inference.TaskType; -import org.elasticsearch.xcontent.ToXContentObject; -import org.elasticsearch.xcontent.XContentBuilder; - -import java.io.IOException; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * Writes a text embedding result in the following json format - * { - * "text_embedding": [ - * { - * "embedding": [ - * 0.1 - * ] - * }, - * { - * "embedding": [ - * 0.2 - * ] - * } - * ] - * } - * - * Legacy text embedding results represents what was returned prior to the - * {@link org.elasticsearch.TransportVersions#V_8_12_0} version. - * @deprecated use {@link TextEmbeddingFloatResults} instead - */ -@Deprecated -public record LegacyTextEmbeddingResults(List embeddings) implements InferenceResults { - public static final String NAME = "text_embedding_results"; - public static final String TEXT_EMBEDDING = TaskType.TEXT_EMBEDDING.toString(); - - public LegacyTextEmbeddingResults(StreamInput in) throws IOException { - this(in.readCollectionAsList(Embedding::new)); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startArray(TEXT_EMBEDDING); - for (Embedding embedding : embeddings) { - embedding.toXContent(builder, params); - } - builder.endArray(); - return builder; - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeCollection(embeddings); - } - - @Override - public String getWriteableName() { - return NAME; - } - - @Override - public String getResultsField() { - return TEXT_EMBEDDING; - } - - @Override - public Map asMap() { - Map map = new LinkedHashMap<>(); - map.put(getResultsField(), embeddings); - - return map; - } - - @Override - public Map asMap(String outputField) { - Map map = new LinkedHashMap<>(); - map.put(outputField, embeddings); - - return map; - } - - @Override - public Object predictedValue() { - throw new UnsupportedOperationException("[" + NAME + "] does not support a single predicted value"); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - LegacyTextEmbeddingResults that = (LegacyTextEmbeddingResults) o; - return Objects.equals(embeddings, that.embeddings); - } - - @Override - public int hashCode() { - return Objects.hash(embeddings); - } - - public TextEmbeddingFloatResults transformToTextEmbeddingResults() { - return new TextEmbeddingFloatResults(this); - } - - public record Embedding(float[] values) implements Writeable, ToXContentObject { - public static final String EMBEDDING = "embedding"; - - public Embedding(StreamInput in) throws IOException { - this(in.readFloatArray()); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeFloatArray(values); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - - builder.startArray(EMBEDDING); - for (float value : values) { - builder.value(value); - } - builder.endArray(); - - builder.endObject(); - return builder; - } - - @Override - public String toString() { - return Strings.toString(this); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Embedding embedding = (Embedding) o; - return Arrays.equals(values, embedding.values); - } - - @Override - public int hashCode() { - return Arrays.hashCode(values); - } - } -} diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java index 37829816aa3aa..1e931e2666e51 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.results; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -112,30 +111,14 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws } public static RankedDoc of(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - return new RankedDoc(in.readInt(), in.readFloat(), in.readOptionalString()); - } else if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - return new RankedDoc(in.readInt(), in.readFloat(), in.readString()); - } else { - return new RankedDoc(Integer.parseInt(in.readString()), Float.parseFloat(in.readString()), in.readString()); - } + return new RankedDoc(in.readInt(), in.readFloat(), in.readOptionalString()); } @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeInt(index); - out.writeFloat(relevanceScore); - out.writeOptionalString(text); - } else if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - out.writeInt(index); - out.writeFloat(relevanceScore); - out.writeString(text == null ? "" : text); - } else { - out.writeString(Integer.toString(index)); - out.writeString(Float.toString(relevanceScore)); - out.writeString(text == null ? "" : text); - } + out.writeInt(index); + out.writeFloat(relevanceScore); + out.writeOptionalString(text); } public Map asMap() { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java index e68a5e4bd13b0..9dbdccd26e5d2 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.stream.Collectors; /** * Writes a text embedding result in the follow json format @@ -60,16 +59,6 @@ public TextEmbeddingFloatResults(StreamInput in) throws IOException { this(in.readCollectionAsList(TextEmbeddingFloatResults.Embedding::new)); } - @SuppressWarnings("deprecation") - TextEmbeddingFloatResults(LegacyTextEmbeddingResults legacyTextEmbeddingResults) { - this( - legacyTextEmbeddingResults.embeddings() - .stream() - .map(embedding -> new Embedding(embedding.values())) - .collect(Collectors.toList()) - ); - } - public static TextEmbeddingFloatResults of(List results) { List embeddings = new ArrayList<>(results.size()); for (InferenceResults result : results) { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java index d11a69f76a715..d9d103fb965d9 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; -import static org.elasticsearch.xpack.core.inference.action.InferenceAction.Request.getInputTypeToWrite; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.collection.IsIterableContainingInOrder.contains; @@ -630,158 +629,41 @@ protected InferenceAction.Request mutateInstance(InferenceAction.Request instanc protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Request instance, TransportVersion version) { InferenceAction.Request mutated; - if (version.before(TransportVersions.V_8_12_0)) { + if (version.supports(INFERENCE_CONTEXT) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), + instance.getQuery(), null, null, - null, - instance.getInput().subList(0, 1), + instance.getInput(), instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false + instance.getInputType(), + instance.getInferenceTimeout(), + false, + InferenceContext.EMPTY_INSTANCE ); - } else if (version.before(TransportVersions.V_8_13_0)) { + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), - null, + instance.getQuery(), null, null, instance.getInput(), instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false + instance.getInputType(), + instance.getInferenceTimeout(), + false, + instance.getContext() ); - } else if (version.before(TransportVersions.V_8_13_0) - && (instance.getInputType() == InputType.UNSPECIFIED - || instance.getInputType() == InputType.CLASSIFICATION - || instance.getInputType() == InputType.CLUSTERING)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - InputType.INGEST, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } else if (version.before(TransportVersions.V_8_13_0) - && (instance.getInputType() == InputType.CLUSTERING || instance.getInputType() == InputType.CLASSIFICATION)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } else if (version.before(TransportVersions.V_8_14_0)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } else if (version.supports(INFERENCE_CONTEXT) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - InferenceContext.EMPTY_INSTANCE - ); - } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - instance.getContext() - ); - } else { - mutated = instance; - } + } else { + mutated = instance; + } return mutated; } - public void testWriteTo_WhenVersionIsOnAfterUnspecifiedAdded() throws IOException { - InferenceAction.Request instance = new InferenceAction.Request( - TaskType.TEXT_EMBEDDING, - "model", - null, - null, - null, - List.of(), - Map.of(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - - InferenceAction.Request deserializedInstance = copyWriteable( - instance, - getNamedWriteableRegistry(), - instanceReader(), - TransportVersions.V_8_13_0 - ); - - assertThat(deserializedInstance.getInputType(), is(InputType.UNSPECIFIED)); - } - - public void testWriteTo_WhenVersionIsBeforeInputTypeAdded_ShouldSetInputTypeToUnspecified() throws IOException { - var instance = new InferenceAction.Request( - TaskType.TEXT_EMBEDDING, - "model", - null, - null, - null, - List.of(), - Map.of(), - InputType.INGEST, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - - InferenceAction.Request deserializedInstance = copyWriteable( - instance, - getNamedWriteableRegistry(), - instanceReader(), - TransportVersions.V_8_12_1 - ); - - assertThat(deserializedInstance.getInputType(), is(InputType.UNSPECIFIED)); - } - public void testWriteTo_ForHasBeenReroutedChanges() throws IOException { var instance = new InferenceAction.Request( TaskType.TEXT_EMBEDDING, @@ -845,16 +727,4 @@ public void testWriteTo_WhenVersionIsBeforeInferenceContext_ShouldSetContextToEm // Verify that context is empty after deserializing a request coming from an older transport version assertThat(deserializedInstance.getContext(), equalTo(InferenceContext.EMPTY_INSTANCE)); } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsUnspecified_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.UNSPECIFIED, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsClassification_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.CLASSIFICATION, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsClustering_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.CLUSTERING, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java deleted file mode 100644 index 6251881e41b8e..0000000000000 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java +++ /dev/null @@ -1,121 +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.core.inference.results; - -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.test.AbstractWireSerializingTestCase; -import org.elasticsearch.xcontent.ToXContentFragment; -import org.elasticsearch.xcontent.XContentBuilder; -import org.elasticsearch.xcontent.XContentFactory; -import org.elasticsearch.xcontent.XContentType; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.Matchers.is; - -@SuppressWarnings("deprecation") -public class LegacyMlTextEmbeddingResultsTests extends AbstractWireSerializingTestCase { - public static LegacyTextEmbeddingResults createRandomResults() { - int embeddings = randomIntBetween(1, 10); - List embeddingResults = new ArrayList<>(embeddings); - - for (int i = 0; i < embeddings; i++) { - embeddingResults.add(createRandomEmbedding()); - } - - return new LegacyTextEmbeddingResults(embeddingResults); - } - - private static LegacyTextEmbeddingResults.Embedding createRandomEmbedding() { - int columns = randomIntBetween(1, 10); - float[] floats = new float[columns]; - for (int i = 0; i < columns; i++) { - floats[i] = randomFloat(); - } - - return new LegacyTextEmbeddingResults.Embedding(floats); - } - - public void testToXContent_CreatesTheRightFormatForASingleEmbedding() throws IOException { - var entity = new LegacyTextEmbeddingResults(List.of(new LegacyTextEmbeddingResults.Embedding(new float[] { 0.1F }))); - - String xContentResult = Strings.toString(entity, true, true); - assertThat(xContentResult, is(""" - { - "text_embedding" : [ - { - "embedding" : [ - 0.1 - ] - } - ] - }""")); - } - - public void testToXContent_CreatesTheRightFormatForMultipleEmbeddings() throws IOException { - var entity = new LegacyTextEmbeddingResults( - List.of( - new LegacyTextEmbeddingResults.Embedding(new float[] { 0.1F }), - new LegacyTextEmbeddingResults.Embedding(new float[] { 0.2F }) - ) - ); - - String xContentResult = Strings.toString(entity, true, true); - assertThat(xContentResult, is(""" - { - "text_embedding" : [ - { - "embedding" : [ - 0.1 - ] - }, - { - "embedding" : [ - 0.2 - ] - } - ] - }""")); - } - - private static String toJsonString(ToXContentFragment entity) throws IOException { - XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON).prettyPrint(); - builder.startObject(); - entity.toXContent(builder, null); - builder.endObject(); - - return Strings.toString(builder); - } - - @Override - protected Writeable.Reader instanceReader() { - return LegacyTextEmbeddingResults::new; - } - - @Override - protected LegacyTextEmbeddingResults createTestInstance() { - return createRandomResults(); - } - - @Override - protected LegacyTextEmbeddingResults mutateInstance(LegacyTextEmbeddingResults instance) throws IOException { - // if true we reduce the embeddings list by a random amount, if false we add an embedding to the list - if (randomBoolean()) { - // -1 to remove at least one item from the list - int end = randomInt(instance.embeddings().size() - 1); - return new LegacyTextEmbeddingResults(instance.embeddings().subList(0, end)); - } else { - List embeddings = new ArrayList<>(instance.embeddings()); - embeddings.add(createRandomEmbedding()); - return new LegacyTextEmbeddingResults(embeddings); - } - } -} diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java index 6873d0e7642d5..917376a745d2c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.core.inference.results; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.xcontent.XContentParser; import org.elasticsearch.xpack.core.ml.AbstractChunkedBWCSerializationTestCase; @@ -58,24 +57,7 @@ protected RankedDocsResults mutateInstance(RankedDocsResults instance) throws IO @Override protected RankedDocsResults mutateInstanceForVersion(RankedDocsResults instance, TransportVersion fromVersion) { - if (fromVersion.onOrAfter(TransportVersions.V_8_15_0)) { - return instance; - } else { - var compatibleDocs = rankedDocsNullStringToEmpty(instance.getRankedDocs()); - return new RankedDocsResults(compatibleDocs); - } - } - - private List rankedDocsNullStringToEmpty(List rankedDocs) { - var result = new ArrayList(rankedDocs.size()); - for (var doc : rankedDocs) { - if (doc.text() == null) { - result.add(new RankedDocsResults.RankedDoc(doc.index(), doc.relevanceScore(), "")); - } else { - result.add(doc); - } - } - return result; + return instance; } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java index 3462663266e9a..447140f2f9571 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java @@ -51,7 +51,6 @@ import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance; diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java index e7008c2292def..b1887cff763fa 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java @@ -14,14 +14,12 @@ import org.elasticsearch.inference.ChunkingSettings; import org.elasticsearch.inference.EmptySecretSettings; import org.elasticsearch.inference.EmptyTaskSettings; -import org.elasticsearch.inference.InferenceResults; import org.elasticsearch.inference.InferenceServiceResults; import org.elasticsearch.inference.SecretSettings; import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.inference.UnifiedCompletionRequest; import org.elasticsearch.xpack.core.inference.results.ChatCompletionResults; -import org.elasticsearch.xpack.core.inference.results.LegacyTextEmbeddingResults; import org.elasticsearch.xpack.core.inference.results.RankedDocsResults; import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResults; import org.elasticsearch.xpack.core.inference.results.StreamingChatCompletionResults; @@ -141,15 +139,9 @@ private InferenceNamedWriteablesProvider() {} * Any new classes which implements NamedWriteable should be added here. * In practice, that is anything which implements TaskSettings, ServiceSettings, or InferenceServiceResults. */ - @SuppressWarnings("deprecation") public static List getNamedWriteables() { List namedWriteables = new ArrayList<>(); - // Legacy inference results - namedWriteables.add( - new NamedWriteableRegistry.Entry(InferenceResults.class, LegacyTextEmbeddingResults.NAME, LegacyTextEmbeddingResults::new) - ); - addInferenceResultsNamedWriteables(namedWriteables); // Empty default task settings diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java index 25b5d248f294b..0700e47bef03d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java @@ -49,9 +49,7 @@ public SentenceBoundaryChunkingSettings(Integer maxChunkSize, @Nullable Integer public SentenceBoundaryChunkingSettings(StreamInput in) throws IOException { maxChunkSize = in.readInt(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - sentenceOverlap = in.readVInt(); - } + sentenceOverlap = in.readVInt(); } @Override @@ -156,9 +154,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeInt(maxChunkSize); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeVInt(sentenceOverlap); - } + out.writeVInt(sentenceOverlap); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java index 9e8ca478987ec..d1842fe8a1df0 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java @@ -184,12 +184,7 @@ public AzureOpenAiEmbeddingsServiceSettings(StreamInput in) throws IOException { dimensionsSetByUser = in.readBoolean(); maxInputTokens = in.readOptionalVInt(); similarity = in.readOptionalEnum(SimilarityMeasure.class); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); } private AzureOpenAiEmbeddingsServiceSettings(CommonFields fields) { @@ -302,10 +297,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(dimensionsSetByUser); out.writeOptionalVInt(maxInputTokens); out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java index aadd40ccb448a..6b92b75fde9d6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java @@ -178,12 +178,7 @@ public CohereServiceSettings(StreamInput in) throws IOException { dimensions = in.readOptionalVInt(); maxInputTokens = in.readOptionalVInt(); modelId = in.readOptionalString(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); } else { @@ -283,9 +278,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalVInt(maxInputTokens); out.writeOptionalString(modelId); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); if (out.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { out.writeEnum(apiVersion); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java index 3da857433704e..2edc2b35de20d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java @@ -118,12 +118,7 @@ public CohereRerankServiceSettings(StreamInput in) throws IOException { } this.modelId = in.readOptionalString(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - this.rateLimitSettings = new RateLimitSettings(in); - } else { - this.rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + this.rateLimitSettings = new RateLimitSettings(in); if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); @@ -192,20 +187,8 @@ public TransportVersion getMinimalSupportedVersion() { public void writeTo(StreamOutput out) throws IOException { var uriToWrite = uri != null ? uri.toString() : null; out.writeOptionalString(uriToWrite); - - if (out.getTransportVersion().before(TransportVersions.V_8_16_0)) { - // An old node expects this data to be present, so we need to send at least the booleans - // indicating that the fields are not set - out.writeOptionalEnum(null); - out.writeOptionalVInt(null); - out.writeOptionalVInt(null); - } - out.writeOptionalString(modelId); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); if (out.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { out.writeEnum(apiVersion); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java index 6395cd36457c2..8e89ea199a323 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.inference.services.elasticsearch; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -124,15 +123,9 @@ private static CommonFields commonFieldsFromMap(Map map, Validat public CustomElandInternalTextEmbeddingServiceSettings(StreamInput in) throws IOException { super(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - dimensions = in.readOptionalVInt(); - similarityMeasure = in.readEnum(SimilarityMeasure.class); - elementType = in.readEnum(DenseVectorFieldMapper.ElementType.class); - } else { - dimensions = null; - similarityMeasure = SimilarityMeasure.COSINE; - elementType = DenseVectorFieldMapper.ElementType.FLOAT; - } + dimensions = in.readOptionalVInt(); + similarityMeasure = in.readEnum(SimilarityMeasure.class); + elementType = in.readEnum(DenseVectorFieldMapper.ElementType.class); } private CustomElandInternalTextEmbeddingServiceSettings(CommonFields commonFields) { @@ -182,12 +175,9 @@ public String getWriteableName() { @Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeOptionalVInt(dimensions); - out.writeEnum(similarityMeasure); - out.writeEnum(elementType); - } + out.writeOptionalVInt(dimensions); + out.writeEnum(similarityMeasure); + out.writeEnum(elementType); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java index 67a537b5ac2c0..cc5c98408ef6e 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java @@ -147,17 +147,11 @@ public ElasticsearchInternalServiceSettings(ElasticsearchInternalServiceSettings } public ElasticsearchInternalServiceSettings(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - this.numAllocations = in.readOptionalVInt(); - } else { - this.numAllocations = in.readVInt(); - } + this.numAllocations = in.readOptionalVInt(); this.numThreads = in.readVInt(); this.modelId = in.readString(); - this.adaptiveAllocationsSettings = in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0) - ? in.readOptionalWriteable(AdaptiveAllocationsSettings::new) - : null; - this.deploymentId = in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0) ? in.readOptionalString() : null; + this.adaptiveAllocationsSettings = in.readOptionalWriteable(AdaptiveAllocationsSettings::new); + this.deploymentId = in.readOptionalString(); } public void setAllocations(Integer numAllocations, @Nullable AdaptiveAllocationsSettings adaptiveAllocationsSettings) { @@ -167,17 +161,11 @@ public void setAllocations(Integer numAllocations, @Nullable AdaptiveAllocations @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeOptionalVInt(getNumAllocations()); - } else { - out.writeVInt(getNumAllocations()); - } + out.writeOptionalVInt(getNumAllocations()); out.writeVInt(getNumThreads()); out.writeString(modelId()); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeOptionalWriteable(getAdaptiveAllocationsSettings()); - out.writeOptionalString(deploymentId); - } + out.writeOptionalWriteable(getAdaptiveAllocationsSettings()); + out.writeOptionalString(deploymentId); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java index 2385c13b4f45d..aece798c0247d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java @@ -95,9 +95,7 @@ public GoogleVertexAiEmbeddingsTaskSettings(@Nullable Boolean autoTruncate, @Nul public GoogleVertexAiEmbeddingsTaskSettings(StreamInput in) throws IOException { this.autoTruncate = in.readOptionalBoolean(); - var inputType = in.readOptionalEnum(InputType.class); - validateInputType(inputType); this.inputType = inputType; } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java index 91735d39f3973..0151b75f4ce03 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java @@ -103,21 +103,10 @@ public HuggingFaceServiceSettings(String url) { public HuggingFaceServiceSettings(StreamInput in) throws IOException { this.uri = createUri(in.readString()); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - similarity = in.readOptionalEnum(SimilarityMeasure.class); - dimensions = in.readOptionalVInt(); - maxInputTokens = in.readOptionalVInt(); - } else { - similarity = null; - dimensions = null; - maxInputTokens = null; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + similarity = in.readOptionalEnum(SimilarityMeasure.class); + dimensions = in.readOptionalVInt(); + maxInputTokens = in.readOptionalVInt(); + rateLimitSettings = new RateLimitSettings(in); } @Override @@ -158,15 +147,10 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(uri.toString()); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - out.writeOptionalVInt(dimensions); - out.writeOptionalVInt(maxInputTokens); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); + out.writeOptionalVInt(dimensions); + out.writeOptionalVInt(maxInputTokens); + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java index ad771e72b6b35..8cdd427877019 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java @@ -75,12 +75,7 @@ public HuggingFaceElserServiceSettings(String url) { public HuggingFaceElserServiceSettings(StreamInput in) throws IOException { uri = createUri(in.readString()); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); } @Override @@ -133,10 +128,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(uri.toString()); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java index 6d340320c655c..d46c98b9f4901 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java @@ -118,12 +118,7 @@ public OpenAiChatCompletionServiceSettings(StreamInput in) throws IOException { this.uri = createOptionalUri(in.readOptionalString()); this.organizationId = in.readOptionalString(); this.maxInputTokens = in.readOptionalVInt(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + this.rateLimitSettings = new RateLimitSettings(in); } @Override @@ -196,10 +191,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalString(uri != null ? uri.toString() : null); out.writeOptionalString(organizationId); out.writeOptionalVInt(maxInputTokens); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java index e9b6a7c77a5fa..38a159a4e6359 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java @@ -183,29 +183,12 @@ public OpenAiEmbeddingsServiceSettings( public OpenAiEmbeddingsServiceSettings(StreamInput in) throws IOException { uri = createOptionalUri(in.readOptionalString()); organizationId = in.readOptionalString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - similarity = in.readOptionalEnum(SimilarityMeasure.class); - dimensions = in.readOptionalVInt(); - maxInputTokens = in.readOptionalVInt(); - } else { - similarity = null; - dimensions = null; - maxInputTokens = null; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - dimensionsSetByUser = in.readBoolean(); - modelId = in.readString(); - } else { - dimensionsSetByUser = false; - modelId = "unset"; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + similarity = in.readOptionalEnum(SimilarityMeasure.class); + dimensions = in.readOptionalVInt(); + maxInputTokens = in.readOptionalVInt(); + dimensionsSetByUser = in.readBoolean(); + modelId = in.readString(); + rateLimitSettings = new RateLimitSettings(in); } private OpenAiEmbeddingsServiceSettings(CommonFields fields, Boolean dimensionsSetByUser) { @@ -317,21 +300,12 @@ public void writeTo(StreamOutput out) throws IOException { var uriToWrite = uri != null ? uri.toString() : null; out.writeOptionalString(uriToWrite); out.writeOptionalString(organizationId); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - out.writeOptionalVInt(dimensions); - out.writeOptionalVInt(maxInputTokens); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeBoolean(dimensionsSetByUser); - out.writeString(modelId); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); + out.writeOptionalVInt(dimensions); + out.writeOptionalVInt(maxInputTokens); + out.writeBoolean(dimensionsSetByUser); + out.writeString(modelId); + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java index bef64b868fea3..fd75c7b7e2923 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java @@ -45,14 +45,7 @@ public OpenAiEmbeddingsTaskSettings(StreamInput in) throws IOException { } private static Settings readTaskSettingsFromStream(StreamInput in) throws IOException { - String user; - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - user = in.readOptionalString(); - } else { - var discard = in.readString(); - user = in.readOptionalString(); - } + String user = in.readOptionalString(); Map headers; @@ -77,12 +70,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeOptionalString(user()); - } else { - out.writeString("m"); // write any string - out.writeOptionalString(user()); - } + out.writeOptionalString(user()); if (out.getTransportVersion().supports(INFERENCE_API_OPENAI_EMBEDDINGS_HEADERS)) { out.writeOptionalMap(headers(), StreamOutput::writeString, StreamOutput::writeString); diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java index 7625534f8c41d..c7ff03b05e975 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.xpack.core.inference.action.InferenceAction; -import org.elasticsearch.xpack.core.inference.results.LegacyMlTextEmbeddingResultsTests; import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResultsTests; import org.elasticsearch.xpack.core.inference.results.TextEmbeddingFloatResultsTests; import org.elasticsearch.xpack.core.ml.AbstractBWCWireSerializationTestCase; @@ -39,11 +38,9 @@ protected Writeable.Reader instanceReader() { @Override protected InferenceAction.Response createTestInstance() { - var result = switch (randomIntBetween(0, 2)) { - case 0 -> TextEmbeddingFloatResultsTests.createRandomResults(); - case 1 -> LegacyMlTextEmbeddingResultsTests.createRandomResults().transformToTextEmbeddingResults(); - default -> SparseEmbeddingResultsTests.createRandomResults(); - }; + var result = randomBoolean() + ? TextEmbeddingFloatResultsTests.createRandomResults() + : SparseEmbeddingResultsTests.createRandomResults(); return new InferenceAction.Response(result); } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java index 08635c25c240d..30c70d0b85aa4 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.cohere.rerank; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.Nullable; @@ -83,15 +82,7 @@ protected CohereRerankServiceSettings mutateInstance(CohereRerankServiceSettings @Override protected CohereRerankServiceSettings mutateInstanceForVersion(CohereRerankServiceSettings instance, TransportVersion version) { - if (version.before(TransportVersions.V_8_15_0)) { - // We always default to the same rate limit settings, if a node is on a version before rate limits were introduced - return new CohereRerankServiceSettings( - instance.uri(), - instance.modelId(), - CohereServiceSettings.DEFAULT_RATE_LIMIT_SETTINGS, - CohereServiceSettings.CohereApiVersion.V1 - ); - } else if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { + if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { return new CohereRerankServiceSettings( instance.uri(), instance.modelId(),