From c5f3bb5d31090fdc021cf544b117ff0d5570f672 Mon Sep 17 00:00:00 2001 From: Amith Koujalgi Date: Mon, 13 Nov 2023 11:45:53 +0530 Subject: [PATCH] - updated non-primitives `Long` and `Boolean` to primitive types --- .../ollama4j/core/OllamaAPI.java | 25 +++++++++++++------ .../ollama4j/core/models/Model.java | 6 ++--- .../core/models/ModelPullResponse.java | 12 ++++----- .../core/models/OllamaResponseModel.java | 6 ++--- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/OllamaAPI.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/OllamaAPI.java index afc0511..5e69f89 100644 --- a/src/main/java/io/github/amithkoujalgi/ollama4j/core/OllamaAPI.java +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/OllamaAPI.java @@ -10,7 +10,6 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.HttpURLConnection; import java.net.URI; import java.net.URISyntaxException; import java.net.http.HttpClient; @@ -22,6 +21,7 @@ import java.util.List; /** * The base Ollama API class. */ +@SuppressWarnings("DuplicatedCode") public class OllamaAPI { private static final Logger logger = LoggerFactory.getLogger(OllamaAPI.class); @@ -205,12 +205,23 @@ public class OllamaAPI { HttpClient httpClient = HttpClient.newHttpClient(); URI uri = URI.create(this.host + "/api/generate"); HttpRequest request = HttpRequest.newBuilder(uri).POST(HttpRequest.BodyPublishers.ofString(Utils.getObjectMapper().writeValueAsString(ollamaRequestModel))).header("Content-Type", "application/json").build(); - HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); - if (response.statusCode() == HttpURLConnection.HTTP_OK) { - OllamaResponseModel ollamaResponseModel = Utils.getObjectMapper().readValue(response.body(), OllamaResponseModel.class); - return ollamaResponseModel.getResponse(); + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()); + int statusCode = response.statusCode(); + InputStream responseBodyStream = response.body(); + StringBuilder responseBuffer = new StringBuilder(); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8))) { + String line; + while ((line = reader.readLine()) != null) { + OllamaResponseModel ollamaResponseModel = Utils.getObjectMapper().readValue(line, OllamaResponseModel.class); + if (!ollamaResponseModel.getDone()) { + responseBuffer.append(ollamaResponseModel.getResponse()); + } + } + } + if (statusCode != 200) { + throw new OllamaBaseException(statusCode + " - " + responseBuffer); } else { - throw new OllamaBaseException(response.statusCode() + " - " + response.body()); + return responseBuffer.toString().trim(); } } @@ -222,7 +233,7 @@ public class OllamaAPI { * @param promptText the prompt/question text * @return the ollama async result callback handle */ - public OllamaAsyncResultCallback askAsyncNew(String ollamaModelType, String promptText) { + public OllamaAsyncResultCallback askAsync(String ollamaModelType, String promptText) { OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(ollamaModelType, promptText); HttpClient httpClient = HttpClient.newHttpClient(); URI uri = URI.create(this.host + "/api/generate"); diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/Model.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/Model.java index f703859..a93329c 100644 --- a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/Model.java +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/Model.java @@ -7,7 +7,7 @@ public class Model { @JsonProperty("modified_at") private String modifiedAt; private String digest; - private Long size; + private long size; /** * Returns the model's tag. This includes model name and its version separated by a colon character `:` @@ -53,11 +53,11 @@ public class Model { this.digest = digest; } - public Long getSize() { + public long getSize() { return size; } - public void setSize(Long size) { + public void setSize(long size) { this.size = size; } diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/ModelPullResponse.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/ModelPullResponse.java index a85ccdc..fab007a 100644 --- a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/ModelPullResponse.java +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/ModelPullResponse.java @@ -7,8 +7,8 @@ public class ModelPullResponse { private String status; private String digest; - private Long total; - private Long completed; + private long total; + private long completed; public String getStatus() { return status; @@ -26,19 +26,19 @@ public class ModelPullResponse { this.digest = digest; } - public Long getTotal() { + public long getTotal() { return total; } - public void setTotal(Long total) { + public void setTotal(long total) { this.total = total; } - public Long getCompleted() { + public long getCompleted() { return completed; } - public void setCompleted(Long completed) { + public void setCompleted(long completed) { this.completed = completed; } } diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/OllamaResponseModel.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/OllamaResponseModel.java index 5320e3a..88c6ca0 100644 --- a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/OllamaResponseModel.java +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/OllamaResponseModel.java @@ -10,7 +10,7 @@ public class OllamaResponseModel { private String model; private @JsonProperty("created_at") String createdAt; private String response; - private Boolean done; + private boolean done; private List context; private @JsonProperty("total_duration") Long totalDuration; private @JsonProperty("load_duration") Long loadDuration; @@ -43,11 +43,11 @@ public class OllamaResponseModel { this.response = response; } - public Boolean getDone() { + public boolean getDone() { return done; } - public void setDone(Boolean done) { + public void setDone(boolean done) { this.done = done; }