diff --git a/api/src/main/java/com/theokanning/openai/embedding/EmbeddingModel.java b/api/src/main/java/com/theokanning/openai/embedding/EmbeddingModel.java new file mode 100644 index 00000000..ff30238a --- /dev/null +++ b/api/src/main/java/com/theokanning/openai/embedding/EmbeddingModel.java @@ -0,0 +1,59 @@ +package com.theokanning.openai.embedding; + +/** + * Enum to represent the available OpenAI embedding models + */ +public enum EmbeddingModel { + + TEXT_EMBEDDING_ADA_002("text-embedding-ada-002", 2), + TEXT_EMBEDDING_V3_SMALL("text-embedding-3-small", 3), + TEXT_EMBEDDING_V3_LARGE("text-embedding-3-large", 3), + ; + + private final String modelName; + private final Integer generation; + + /** + * Constructor. + * + * @param modelName the value of the enum + */ + EmbeddingModel(String modelName, Integer generation) { + this.modelName = modelName; + this.generation = generation; + } + + /** + * Method to return enum from a string value. + * + * @param value the value to convert to an enum + * @return the enum value + */ + public static EmbeddingModel fromValue(String value) { + for (EmbeddingModel b : EmbeddingModel.values()) { + if (b.modelName.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Method to return the value of the enum. + * + * @return the value of the enum + */ + public Integer getGeneration() { + return generation; + } + + /** + * Method to return the value of the enum. + * + * @return the value of the enum + */ + @Override + public String toString() { + return modelName; + } +} diff --git a/api/src/main/java/com/theokanning/openai/embedding/EmbeddingRequest.java b/api/src/main/java/com/theokanning/openai/embedding/EmbeddingRequest.java index e36308a7..affcf628 100644 --- a/api/src/main/java/com/theokanning/openai/embedding/EmbeddingRequest.java +++ b/api/src/main/java/com/theokanning/openai/embedding/EmbeddingRequest.java @@ -38,7 +38,25 @@ public class EmbeddingRequest { String user; /** - * The number of dimensions for the embedding. Default value, is not provided, is 1536 + * The number of dimensions to be used by the model to represent each input text as the feature + * vector. */ - int dimensions = 1536; + @Setter(AccessLevel.NONE) + Integer dimensions = null; + + /** + * Set the number of dimensions to be used by the model to represent each input text as the feature vector. + * + * @param dimensions The number of dimensions to be used by the model. Only supported for models from or after + * third generation. + */ + public void setDimensions(Integer dimensions) { + EmbeddingModel embeddingModel = EmbeddingModel.fromValue(this.model); + + if (embeddingModel.getGeneration() > 2) { + this.dimensions = dimensions; + } else { + this.dimensions = null; + } + } } diff --git a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java index 7342e953..0768bde4 100644 --- a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java +++ b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java @@ -77,6 +77,7 @@ public interface OpenAiApi { @POST("/v1/engines/{engine_id}/completions") Single createCompletion(@Path("engine_id") String engineId, @Body CompletionRequest request); + @Deprecated @POST("/v1/edits") Single createEdit(@Body EditRequest request); diff --git a/gradle.properties b/gradle.properties index a4f840ab..ae023b22 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=com.theokanning.openai-gpt3-java -VERSION_NAME=0.18.2 +VERSION_NAME=0.18.3 POM_URL=https://github.com/theokanning/openai-java POM_SCM_URL=https://github.com/theokanning/openai-java diff --git a/service/src/test/java/com/theokanning/openai/service/EditTest.java b/service/src/test/java/com/theokanning/openai/service/EditTest.java index 64277bdd..c879f7f8 100644 --- a/service/src/test/java/com/theokanning/openai/service/EditTest.java +++ b/service/src/test/java/com/theokanning/openai/service/EditTest.java @@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; +@Deprecated public class EditTest { String token = System.getenv("OPENAI_TOKEN");