From b6a293add71c46833b9d5aa95cb4e6ef4682c9e4 Mon Sep 17 00:00:00 2001
From: Markus Klenke <markusklenke86@gmail.com>
Date: Sat, 7 Dec 2024 00:36:37 +0100
Subject: [PATCH] Makes changes to OllamaChatResult backwards compatible

---
 docs/docs/apis-generate/chat.md               | 10 +++---
 .../models/chat/OllamaChatResult.java         | 24 ++++++++++---
 .../integrationtests/TestRealAPIs.java        | 34 +++++++++----------
 3 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/docs/docs/apis-generate/chat.md b/docs/docs/apis-generate/chat.md
index 9ed9e79..c9c73b7 100644
--- a/docs/docs/apis-generate/chat.md
+++ b/docs/docs/apis-generate/chat.md
@@ -33,7 +33,7 @@ public class Main {
         // start conversation with model
         OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
 
-        System.out.println("First answer: " + chatResult.getResponse());
+        System.out.println("First answer: " + chatResult.getResponseModel().getMessage().getContent());
 
         // create next userQuestion
         requestModel = builder.withMessages(chatResult.getChatHistory()).withMessage(OllamaChatMessageRole.USER, "And what is the second largest city?").build();
@@ -41,7 +41,7 @@ public class Main {
         // "continue" conversation with model
         chatResult = ollamaAPI.chat(requestModel);
 
-        System.out.println("Second answer: " + chatResult.getResponse());
+        System.out.println("Second answer: " + chatResult.getResponseModel().getMessage().getContent());
 
         System.out.println("Chat History: " + chatResult.getChatHistory());
     }
@@ -205,7 +205,7 @@ public class Main {
         // start conversation with model
         OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
 
-        System.out.println(chatResult.getResponse());
+        System.out.println(chatResult.getResponseModel());
     }
 }
 
@@ -244,7 +244,7 @@ public class Main {
                                 new File("/path/to/image"))).build();
 
         OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
-        System.out.println("First answer: " + chatResult.getResponse());
+        System.out.println("First answer: " + chatResult.getResponseModel());
 
         builder.reset();
 
@@ -254,7 +254,7 @@ public class Main {
                         .withMessage(OllamaChatMessageRole.USER, "What's the dogs breed?").build();
 
         chatResult = ollamaAPI.chat(requestModel);
-        System.out.println("Second answer: " + chatResult.getResponse());
+        System.out.println("Second answer: " + chatResult.getResponseModel());
     }
 }
 ```
diff --git a/src/main/java/io/github/ollama4j/models/chat/OllamaChatResult.java b/src/main/java/io/github/ollama4j/models/chat/OllamaChatResult.java
index 0ea1c00..bf7eaea 100644
--- a/src/main/java/io/github/ollama4j/models/chat/OllamaChatResult.java
+++ b/src/main/java/io/github/ollama4j/models/chat/OllamaChatResult.java
@@ -3,7 +3,6 @@ package io.github.ollama4j.models.chat;
 import java.util.List;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
-import io.github.ollama4j.models.response.OllamaResult;
 import lombok.Getter;
 
 import static io.github.ollama4j.utils.Utils.getObjectMapper;
@@ -18,12 +17,12 @@ public class OllamaChatResult {
 
     private List<OllamaChatMessage> chatHistory;
 
-    private OllamaChatResponseModel response;
+    private OllamaChatResponseModel responseModel;
 
-    public OllamaChatResult(OllamaChatResponseModel response, List<OllamaChatMessage> chatHistory) {
+    public OllamaChatResult(OllamaChatResponseModel responseModel, List<OllamaChatMessage> chatHistory) {
         this.chatHistory = chatHistory;
-        this.response = response;
-        appendAnswerToChatHistory(response);
+        this.responseModel = responseModel;
+        appendAnswerToChatHistory(responseModel);
     }
 
     private void appendAnswerToChatHistory(OllamaChatResponseModel response) {
@@ -38,4 +37,19 @@ public class OllamaChatResult {
             throw new RuntimeException(e);
         }
     }
+
+    @Deprecated
+    public String getResponse(){
+        return responseModel != null ? responseModel.getMessage().getContent() : "";
+    }
+
+    @Deprecated
+    public int getHttpStatusCode(){
+        return 200;
+    }
+
+    @Deprecated
+    public long getResponseTime(){
+        return responseModel != null ? responseModel.getTotalDuration() : 0L;
+    }
 }
diff --git a/src/test/java/io/github/ollama4j/integrationtests/TestRealAPIs.java b/src/test/java/io/github/ollama4j/integrationtests/TestRealAPIs.java
index d18187b..fd834dd 100644
--- a/src/test/java/io/github/ollama4j/integrationtests/TestRealAPIs.java
+++ b/src/test/java/io/github/ollama4j/integrationtests/TestRealAPIs.java
@@ -194,9 +194,9 @@ class TestRealAPIs {
 
             OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
-            assertNotNull(chatResult.getResponse().getMessage());
-            assertFalse(chatResult.getResponse().getMessage().getContent().isBlank());
+            assertNotNull(chatResult.getResponseModel());
+            assertNotNull(chatResult.getResponseModel().getMessage());
+            assertFalse(chatResult.getResponseModel().getMessage().getContent().isBlank());
             assertEquals(4, chatResult.getChatHistory().size());
         } catch (IOException | OllamaBaseException | InterruptedException e) {
             fail(e);
@@ -217,10 +217,10 @@ class TestRealAPIs {
 
             OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
-            assertNotNull(chatResult.getResponse().getMessage());
-            assertFalse(chatResult.getResponse().getMessage().getContent().isBlank());
-            assertTrue(chatResult.getResponse().getMessage().getContent().startsWith("NI"));
+            assertNotNull(chatResult.getResponseModel());
+            assertNotNull(chatResult.getResponseModel().getMessage());
+            assertFalse(chatResult.getResponseModel().getMessage().getContent().isBlank());
+            assertTrue(chatResult.getResponseModel().getMessage().getContent().startsWith("NI"));
             assertEquals(3, chatResult.getChatHistory().size());
         } catch (IOException | OllamaBaseException | InterruptedException e) {
             fail(e);
@@ -270,10 +270,10 @@ class TestRealAPIs {
 
             OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
-            assertNotNull(chatResult.getResponse().getMessage());
-            assertEquals(OllamaChatMessageRole.ASSISTANT.getRoleName(),chatResult.getResponse().getMessage().getRole().getRoleName());
-            List<OllamaChatToolCalls> toolCalls = chatResult.getResponse().getMessage().getToolCalls();
+            assertNotNull(chatResult.getResponseModel());
+            assertNotNull(chatResult.getResponseModel().getMessage());
+            assertEquals(OllamaChatMessageRole.ASSISTANT.getRoleName(),chatResult.getResponseModel().getMessage().getRole().getRoleName());
+            List<OllamaChatToolCalls> toolCalls = chatResult.getResponseModel().getMessage().getToolCalls();
             assertEquals(1, toolCalls.size());
             assertEquals("get-employee-details",toolCalls.get(0).getFunction().getName());
             assertEquals(1, toolCalls.get(0).getFunction().getArguments().size());
@@ -305,10 +305,10 @@ class TestRealAPIs {
                 sb.append(substring);
             });
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
-            assertNotNull(chatResult.getResponse().getMessage());
-            assertNotNull(chatResult.getResponse().getMessage().getContent());
-            assertEquals(sb.toString().trim(), chatResult.getResponse().getMessage().getContent().trim());
+            assertNotNull(chatResult.getResponseModel());
+            assertNotNull(chatResult.getResponseModel().getMessage());
+            assertNotNull(chatResult.getResponseModel().getMessage().getContent());
+            assertEquals(sb.toString().trim(), chatResult.getResponseModel().getMessage().getContent().trim());
         } catch (IOException | OllamaBaseException | InterruptedException e) {
             fail(e);
         }
@@ -327,7 +327,7 @@ class TestRealAPIs {
 
             OllamaChatResult chatResult = ollamaAPI.chat(requestModel);
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
+            assertNotNull(chatResult.getResponseModel());
 
             builder.reset();
 
@@ -337,7 +337,7 @@ class TestRealAPIs {
 
             chatResult = ollamaAPI.chat(requestModel);
             assertNotNull(chatResult);
-            assertNotNull(chatResult.getResponse());
+            assertNotNull(chatResult.getResponseModel());
 
 
         } catch (IOException | OllamaBaseException | InterruptedException e) {