From a09f1362e9e34be245426ca2bf469f9b93bacf08 Mon Sep 17 00:00:00 2001 From: Markus Klenke Date: Mon, 2 Dec 2024 22:48:33 +0100 Subject: [PATCH] Adds Builder for EmbedRequests and deprecates old Embedding Models --- .../models/chat/OllamaChatRequestBuilder.java | 6 +-- .../embeddings/OllamaEmbedRequestBuilder.java | 40 +++++++++++++++++++ .../OllamaEmbeddingResponseModel.java | 1 + .../OllamaEmbeddingsRequestBuilder.java | 1 + .../OllamaEmbeddingsRequestModel.java | 1 + ...ava => TestEmbedRequestSerialization.java} | 19 ++++----- 6 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbedRequestBuilder.java rename src/test/java/io/github/ollama4j/unittests/jackson/{TestEmbeddingsRequestSerialization.java => TestEmbedRequestSerialization.java} (55%) diff --git a/src/main/java/io/github/ollama4j/models/chat/OllamaChatRequestBuilder.java b/src/main/java/io/github/ollama4j/models/chat/OllamaChatRequestBuilder.java index 7cdf879..c9882d0 100644 --- a/src/main/java/io/github/ollama4j/models/chat/OllamaChatRequestBuilder.java +++ b/src/main/java/io/github/ollama4j/models/chat/OllamaChatRequestBuilder.java @@ -45,7 +45,7 @@ public class OllamaChatRequestBuilder { try { return Files.readAllBytes(file.toPath()); } catch (IOException e) { - LOG.warn(String.format("File '%s' could not be accessed, will not add to message!", file.toPath()), e); + LOG.warn("File '{}' could not be accessed, will not add to message!", file.toPath(), e); return new byte[0]; } }).collect(Collectors.toList()); @@ -63,9 +63,9 @@ public class OllamaChatRequestBuilder { try { binaryImages.add(Utils.loadImageBytesFromUrl(imageUrl)); } catch (URISyntaxException e) { - LOG.warn(String.format("URL '%s' could not be accessed, will not add to message!", imageUrl), e); + LOG.warn("URL '{}' could not be accessed, will not add to message!", imageUrl, e); } catch (IOException e) { - LOG.warn(String.format("Content of URL '%s' could not be read, will not add to message!", imageUrl), e); + LOG.warn("Content of URL '{}' could not be read, will not add to message!", imageUrl, e); } } } diff --git a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbedRequestBuilder.java b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbedRequestBuilder.java new file mode 100644 index 0000000..7b85789 --- /dev/null +++ b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbedRequestBuilder.java @@ -0,0 +1,40 @@ +package io.github.ollama4j.models.embeddings; + +import io.github.ollama4j.utils.Options; + +import java.util.List; + +/** + * Builderclass to easily create Requests for Embedding models using ollama. + */ +public class OllamaEmbedRequestBuilder { + + private final OllamaEmbedRequestModel request; + + private OllamaEmbedRequestBuilder(String model, List input) { + this.request = new OllamaEmbedRequestModel(model,input); + } + + public static OllamaEmbedRequestBuilder getInstance(String model, String... input){ + return new OllamaEmbedRequestBuilder(model, List.of(input)); + } + + public OllamaEmbedRequestBuilder withOptions(Options options){ + this.request.setOptions(options.getOptionsMap()); + return this; + } + + public OllamaEmbedRequestBuilder withKeepAlive(String keepAlive){ + this.request.setKeepAlive(keepAlive); + return this; + } + + public OllamaEmbedRequestBuilder withoutTruncate(){ + this.request.setTruncate(false); + return this; + } + + public OllamaEmbedRequestModel build() { + return this.request; + } +} diff --git a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingResponseModel.java b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingResponseModel.java index 24d95bc..dcf7b47 100644 --- a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingResponseModel.java +++ b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingResponseModel.java @@ -7,6 +7,7 @@ import lombok.Data; @SuppressWarnings("unused") @Data +@Deprecated(since="1.0.90") public class OllamaEmbeddingResponseModel { @JsonProperty("embedding") private List embedding; diff --git a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestBuilder.java b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestBuilder.java index b542931..47daf75 100644 --- a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestBuilder.java +++ b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestBuilder.java @@ -2,6 +2,7 @@ package io.github.ollama4j.models.embeddings; import io.github.ollama4j.utils.Options; +@Deprecated(since="1.0.90") public class OllamaEmbeddingsRequestBuilder { private OllamaEmbeddingsRequestBuilder(String model, String prompt){ diff --git a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestModel.java b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestModel.java index d700b91..d68624c 100644 --- a/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestModel.java +++ b/src/main/java/io/github/ollama4j/models/embeddings/OllamaEmbeddingsRequestModel.java @@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor @NoArgsConstructor +@Deprecated(since="1.0.90") public class OllamaEmbeddingsRequestModel { @NonNull private String model; diff --git a/src/test/java/io/github/ollama4j/unittests/jackson/TestEmbeddingsRequestSerialization.java b/src/test/java/io/github/ollama4j/unittests/jackson/TestEmbedRequestSerialization.java similarity index 55% rename from src/test/java/io/github/ollama4j/unittests/jackson/TestEmbeddingsRequestSerialization.java rename to src/test/java/io/github/ollama4j/unittests/jackson/TestEmbedRequestSerialization.java index 7cb0297..534b204 100644 --- a/src/test/java/io/github/ollama4j/unittests/jackson/TestEmbeddingsRequestSerialization.java +++ b/src/test/java/io/github/ollama4j/unittests/jackson/TestEmbedRequestSerialization.java @@ -1,36 +1,37 @@ package io.github.ollama4j.unittests.jackson; import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.github.ollama4j.models.embeddings.OllamaEmbedRequestBuilder; +import io.github.ollama4j.models.embeddings.OllamaEmbedRequestModel; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import io.github.ollama4j.models.embeddings.OllamaEmbeddingsRequestModel; -import io.github.ollama4j.models.embeddings.OllamaEmbeddingsRequestBuilder; import io.github.ollama4j.utils.OptionsBuilder; -public class TestEmbeddingsRequestSerialization extends AbstractSerializationTest { +public class TestEmbedRequestSerialization extends AbstractSerializationTest { - private OllamaEmbeddingsRequestBuilder builder; + private OllamaEmbedRequestBuilder builder; @BeforeEach public void init() { - builder = OllamaEmbeddingsRequestBuilder.getInstance("DummyModel","DummyPrompt"); + builder = OllamaEmbedRequestBuilder.getInstance("DummyModel","DummyPrompt"); } @Test public void testRequestOnlyMandatoryFields() { - OllamaEmbeddingsRequestModel req = builder.build(); + OllamaEmbedRequestModel req = builder.build(); String jsonRequest = serialize(req); - assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class), req); + assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaEmbedRequestModel.class), req); } @Test public void testRequestWithOptions() { OptionsBuilder b = new OptionsBuilder(); - OllamaEmbeddingsRequestModel req = builder + OllamaEmbedRequestModel req = builder .withOptions(b.setMirostat(1).build()).build(); String jsonRequest = serialize(req); - OllamaEmbeddingsRequestModel deserializeRequest = deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class); + OllamaEmbedRequestModel deserializeRequest = deserialize(jsonRequest,OllamaEmbedRequestModel.class); assertEqualsAfterUnmarshalling(deserializeRequest, req); assertEquals(1, deserializeRequest.getOptions().get("mirostat")); }