mirror of
				https://github.com/amithkoujalgi/ollama4j.git
				synced 2025-11-04 10:30:41 +01:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					165d04b1bb | ||
| 
						 | 
					16d2160b52 | ||
| 
						 | 
					e39c47b8e1 | ||
| 
						 | 
					bb0785140b | ||
| 
						 | 
					e33ad1a1e3 | ||
| 
						 | 
					cd60c506cb | ||
| 
						 | 
					b55925df28 | ||
| 
						 | 
					3a9b8c309d | ||
| 
						 | 
					bf07159522 | ||
| 
						 | 
					f8ca4d041d | ||
| 
						 | 
					9c6a55f7b0 | ||
| 
						 | 
					2866d83a2f | ||
| 
						 | 
					45e5d07581 | ||
| 
						 | 
					3a264cb6bb | ||
| 
						 | 
					e1b9d42771 | ||
| 
						 | 
					1a086c37c0 | ||
| 
						 | 
					54edba144c | ||
| 
						 | 
					3ed3187ba9 | ||
| 
						 | 
					b7cd81a7f5 | 
							
								
								
									
										21
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								README.md
									
									
									
									
									
								
							@@ -67,10 +67,29 @@ In your Maven project, add this dependency:
 | 
				
			|||||||
<dependency>
 | 
					<dependency>
 | 
				
			||||||
    <groupId>io.github.amithkoujalgi</groupId>
 | 
					    <groupId>io.github.amithkoujalgi</groupId>
 | 
				
			||||||
    <artifactId>ollama4j</artifactId>
 | 
					    <artifactId>ollama4j</artifactId>
 | 
				
			||||||
    <version>1.0.57</version>
 | 
					    <version>1.0.70</version>
 | 
				
			||||||
</dependency>
 | 
					</dependency>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					or
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In your Gradle project, add the dependency using the Kotlin DSL or the Groovy DSL:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```kotlin
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    val ollama4jVersion = "1.0.70"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    implementation("io.github.amithkoujalgi:ollama4j:$ollama4jVersion")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					 ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```groovy
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    implementation("io.github.amithkoujalgi:ollama4j:1.0.70")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Latest release:
 | 
					Latest release:
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <groupId>io.github.amithkoujalgi</groupId>
 | 
					    <groupId>io.github.amithkoujalgi</groupId>
 | 
				
			||||||
    <artifactId>ollama4j</artifactId>
 | 
					    <artifactId>ollama4j</artifactId>
 | 
				
			||||||
    <version>1.0.69</version>
 | 
					    <version>1.0.73</version>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <name>Ollama4j</name>
 | 
					    <name>Ollama4j</name>
 | 
				
			||||||
    <description>Java library for interacting with Ollama API.</description>
 | 
					    <description>Java library for interacting with Ollama API.</description>
 | 
				
			||||||
@@ -39,7 +39,7 @@
 | 
				
			|||||||
        <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection>
 | 
					        <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection>
 | 
				
			||||||
        <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection>
 | 
					        <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection>
 | 
				
			||||||
        <url>https://github.com/amithkoujalgi/ollama4j</url>
 | 
					        <url>https://github.com/amithkoujalgi/ollama4j</url>
 | 
				
			||||||
        <tag>v1.0.69</tag>
 | 
					        <tag>v1.0.73</tag>
 | 
				
			||||||
    </scm>
 | 
					    </scm>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <build>
 | 
					    <build>
 | 
				
			||||||
@@ -149,7 +149,12 @@
 | 
				
			|||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>com.fasterxml.jackson.core</groupId>
 | 
					            <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
            <artifactId>jackson-databind</artifactId>
 | 
					            <artifactId>jackson-databind</artifactId>
 | 
				
			||||||
            <version>2.15.3</version>
 | 
					            <version>2.17.1</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.fasterxml.jackson.datatype</groupId>
 | 
				
			||||||
 | 
					            <artifactId>jackson-datatype-jsr310</artifactId>
 | 
				
			||||||
 | 
					            <version>2.17.1</version>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>ch.qos.logback</groupId>
 | 
					            <groupId>ch.qos.logback</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,8 @@
 | 
				
			|||||||
package io.github.amithkoujalgi.ollama4j.core.models;
 | 
					package io.github.amithkoujalgi.ollama4j.core.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					import java.time.OffsetDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
import com.fasterxml.jackson.core.JsonProcessingException;
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
 | 
				
			||||||
@@ -11,7 +14,9 @@ public class Model {
 | 
				
			|||||||
  private String name;
 | 
					  private String name;
 | 
				
			||||||
  private String model;
 | 
					  private String model;
 | 
				
			||||||
  @JsonProperty("modified_at")
 | 
					  @JsonProperty("modified_at")
 | 
				
			||||||
  private String modifiedAt;
 | 
					  private OffsetDateTime modifiedAt;
 | 
				
			||||||
 | 
					  @JsonProperty("expires_at")
 | 
				
			||||||
 | 
					  private OffsetDateTime expiresAt;
 | 
				
			||||||
  private String digest;
 | 
					  private String digest;
 | 
				
			||||||
  private long size;
 | 
					  private long size;
 | 
				
			||||||
  @JsonProperty("details")
 | 
					  @JsonProperty("details")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,4 +79,5 @@ public class OllamaModelType {
 | 
				
			|||||||
    public static final String NOTUS = "notus";
 | 
					    public static final String NOTUS = "notus";
 | 
				
			||||||
    public static final String DUCKDB_NSQL = "duckdb-nsql";
 | 
					    public static final String DUCKDB_NSQL = "duckdb-nsql";
 | 
				
			||||||
    public static final String ALL_MINILM = "all-minilm";
 | 
					    public static final String ALL_MINILM = "all-minilm";
 | 
				
			||||||
 | 
					    public static final String CODESTRAL = "codestral";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,10 +8,18 @@ import java.net.URISyntaxException;
 | 
				
			|||||||
import java.net.URL;
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Utils {
 | 
					public class Utils {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private static ObjectMapper objectMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static ObjectMapper getObjectMapper() {
 | 
					  public static ObjectMapper getObjectMapper() {
 | 
				
			||||||
    return new ObjectMapper();
 | 
					    if(objectMapper == null) {
 | 
				
			||||||
 | 
					      objectMapper = new ObjectMapper();
 | 
				
			||||||
 | 
					      objectMapper.registerModule(new JavaTimeModule());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return objectMapper;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static byte[] loadImageBytesFromUrl(String imageUrl)
 | 
					  public static byte[] loadImageBytesFromUrl(String imageUrl)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,30 +6,30 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public abstract class AbstractRequestSerializationTest<T> {
 | 
					public abstract class AbstractSerializationTest<T> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected ObjectMapper mapper = Utils.getObjectMapper();
 | 
					    protected ObjectMapper mapper = Utils.getObjectMapper();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected String serializeRequest(T req) {
 | 
					    protected String serialize(T obj) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return mapper.writeValueAsString(req);
 | 
					            return mapper.writeValueAsString(obj);
 | 
				
			||||||
        } catch (JsonProcessingException e) {
 | 
					        } catch (JsonProcessingException e) {
 | 
				
			||||||
            fail("Could not serialize request!", e);
 | 
					            fail("Could not serialize request!", e);
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected T deserializeRequest(String jsonRequest, Class<T> requestClass) {
 | 
					    protected T deserialize(String jsonObject, Class<T> deserializationClass) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return mapper.readValue(jsonRequest, requestClass);
 | 
					            return mapper.readValue(jsonObject, deserializationClass);
 | 
				
			||||||
        } catch (JsonProcessingException e) {
 | 
					        } catch (JsonProcessingException e) {
 | 
				
			||||||
            fail("Could not deserialize jsonRequest!", e);
 | 
					            fail("Could not deserialize jsonObject!", e);
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void assertEqualsAfterUnmarshalling(T unmarshalledRequest,
 | 
					    protected void assertEqualsAfterUnmarshalling(T unmarshalledObject,
 | 
				
			||||||
        T req) {
 | 
					        T req) {
 | 
				
			||||||
        assertEquals(req, unmarshalledRequest);
 | 
					        assertEquals(req, unmarshalledObject);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -14,7 +14,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestBuilde
 | 
				
			|||||||
import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestModel;
 | 
					import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestModel;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TestChatRequestSerialization extends AbstractRequestSerializationTest<OllamaChatRequestModel>{
 | 
					public class TestChatRequestSerialization extends AbstractSerializationTest<OllamaChatRequestModel> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private OllamaChatRequestBuilder builder;
 | 
					    private OllamaChatRequestBuilder builder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -26,8 +26,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testRequestOnlyMandatoryFields() {
 | 
					    public void testRequestOnlyMandatoryFields() {
 | 
				
			||||||
        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt").build();
 | 
					        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt").build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
@@ -35,16 +35,16 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.SYSTEM, "System prompt")
 | 
					        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.SYSTEM, "System prompt")
 | 
				
			||||||
        .withMessage(OllamaChatMessageRole.USER, "Some prompt")
 | 
					        .withMessage(OllamaChatMessageRole.USER, "Some prompt")
 | 
				
			||||||
        .build();
 | 
					        .build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testRequestWithMessageAndImage() {
 | 
					    public void testRequestWithMessageAndImage() {
 | 
				
			||||||
        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt",
 | 
					        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt",
 | 
				
			||||||
                List.of(new File("src/test/resources/dog-on-a-boat.jpg"))).build();
 | 
					                List.of(new File("src/test/resources/dog-on-a-boat.jpg"))).build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
@@ -61,8 +61,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
            .withOptions(b.setTopP(1).build())
 | 
					            .withOptions(b.setTopP(1).build())
 | 
				
			||||||
            .build();
 | 
					            .build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        OllamaChatRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaChatRequestModel.class);
 | 
					        OllamaChatRequestModel deserializeRequest = deserialize(jsonRequest, OllamaChatRequestModel.class);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
					        assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
				
			||||||
        assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
					        assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
				
			||||||
        assertEquals(1.0, deserializeRequest.getOptions().get("temperature"));
 | 
					        assertEquals(1.0, deserializeRequest.getOptions().get("temperature"));
 | 
				
			||||||
@@ -79,7 +79,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt")
 | 
					        OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt")
 | 
				
			||||||
                .withGetJsonResponse().build();
 | 
					                .withGetJsonResponse().build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        // no jackson deserialization as format property is not boolean ==> omit as deserialization
 | 
					        // no jackson deserialization as format property is not boolean ==> omit as deserialization
 | 
				
			||||||
        // of request is never used in real code anyways
 | 
					        // of request is never used in real code anyways
 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(jsonRequest);
 | 
					        JSONObject jsonObject = new JSONObject(jsonRequest);
 | 
				
			||||||
@@ -91,15 +91,15 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
    public void testWithTemplate() {
 | 
					    public void testWithTemplate() {
 | 
				
			||||||
        OllamaChatRequestModel req = builder.withTemplate("System Template")
 | 
					        OllamaChatRequestModel req = builder.withTemplate("System Template")
 | 
				
			||||||
            .build();
 | 
					            .build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaChatRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaChatRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testWithStreaming() {
 | 
					    public void testWithStreaming() {
 | 
				
			||||||
        OllamaChatRequestModel req = builder.withStreaming().build();
 | 
					        OllamaChatRequestModel req = builder.withStreaming().build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).isStream(), true);
 | 
					        assertEquals(deserialize(jsonRequest, OllamaChatRequestModel.class).isStream(), true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
@@ -107,7 +107,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
 | 
				
			|||||||
        String expectedKeepAlive = "5m";
 | 
					        String expectedKeepAlive = "5m";
 | 
				
			||||||
        OllamaChatRequestModel req = builder.withKeepAlive(expectedKeepAlive)
 | 
					        OllamaChatRequestModel req = builder.withKeepAlive(expectedKeepAlive)
 | 
				
			||||||
            .build();
 | 
					            .build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).getKeepAlive(), expectedKeepAlive);
 | 
					        assertEquals(deserialize(jsonRequest, OllamaChatRequestModel.class).getKeepAlive(), expectedKeepAlive);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsR
 | 
				
			|||||||
import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsRequestBuilder;
 | 
					import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsRequestBuilder;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializationTest<OllamaEmbeddingsRequestModel>{
 | 
					public class TestEmbeddingsRequestSerialization extends AbstractSerializationTest<OllamaEmbeddingsRequestModel> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private OllamaEmbeddingsRequestBuilder builder;
 | 
					        private OllamaEmbeddingsRequestBuilder builder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -19,8 +19,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa
 | 
				
			|||||||
            @Test
 | 
					            @Test
 | 
				
			||||||
    public void testRequestOnlyMandatoryFields() {
 | 
					    public void testRequestOnlyMandatoryFields() {
 | 
				
			||||||
        OllamaEmbeddingsRequestModel req = builder.build();
 | 
					        OllamaEmbeddingsRequestModel req = builder.build();
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Test
 | 
					        @Test
 | 
				
			||||||
@@ -29,8 +29,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa
 | 
				
			|||||||
            OllamaEmbeddingsRequestModel req = builder
 | 
					            OllamaEmbeddingsRequestModel req = builder
 | 
				
			||||||
                    .withOptions(b.setMirostat(1).build()).build();
 | 
					                    .withOptions(b.setMirostat(1).build()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            String jsonRequest = serializeRequest(req);
 | 
					            String jsonRequest = serialize(req);
 | 
				
			||||||
            OllamaEmbeddingsRequestModel deserializeRequest = deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class);
 | 
					            OllamaEmbeddingsRequestModel deserializeRequest = deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class);
 | 
				
			||||||
            assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
					            assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
				
			||||||
            assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
					            assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateReque
 | 
				
			|||||||
import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateRequestModel;
 | 
					import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateRequestModel;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TestGenerateRequestSerialization extends AbstractRequestSerializationTest<OllamaGenerateRequestModel>{
 | 
					public class TestGenerateRequestSerialization extends AbstractSerializationTest<OllamaGenerateRequestModel> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private OllamaGenerateRequestBuilder builder;
 | 
					    private OllamaGenerateRequestBuilder builder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,8 +24,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
 | 
				
			|||||||
    public void testRequestOnlyMandatoryFields() {
 | 
					    public void testRequestOnlyMandatoryFields() {
 | 
				
			||||||
        OllamaGenerateRequestModel req = builder.withPrompt("Some prompt").build();
 | 
					        OllamaGenerateRequestModel req = builder.withPrompt("Some prompt").build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class), req);
 | 
					        assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaGenerateRequestModel.class), req);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
@@ -34,8 +34,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
 | 
				
			|||||||
        OllamaGenerateRequestModel req =
 | 
					        OllamaGenerateRequestModel req =
 | 
				
			||||||
                builder.withPrompt("Some prompt").withOptions(b.setMirostat(1).build()).build();
 | 
					                builder.withPrompt("Some prompt").withOptions(b.setMirostat(1).build()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        OllamaGenerateRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class);
 | 
					        OllamaGenerateRequestModel deserializeRequest = deserialize(jsonRequest, OllamaGenerateRequestModel.class);
 | 
				
			||||||
        assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
					        assertEqualsAfterUnmarshalling(deserializeRequest, req);
 | 
				
			||||||
        assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
					        assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -45,7 +45,7 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
 | 
				
			|||||||
        OllamaGenerateRequestModel req =
 | 
					        OllamaGenerateRequestModel req =
 | 
				
			||||||
                builder.withPrompt("Some prompt").withGetJsonResponse().build();
 | 
					                builder.withPrompt("Some prompt").withGetJsonResponse().build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String jsonRequest = serializeRequest(req);
 | 
					        String jsonRequest = serialize(req);
 | 
				
			||||||
        // no jackson deserialization as format property is not boolean ==> omit as deserialization
 | 
					        // no jackson deserialization as format property is not boolean ==> omit as deserialization
 | 
				
			||||||
        // of request is never used in real code anyways
 | 
					        // of request is never used in real code anyways
 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(jsonRequest);
 | 
					        JSONObject jsonObject = new JSONObject(jsonRequest);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					package io.github.amithkoujalgi.ollama4j.unittests.jackson;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.github.amithkoujalgi.ollama4j.core.models.Model;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class TestModelRequestSerialization extends AbstractSerializationTest<Model> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testDeserializationOfModelResponseWithOffsetTime(){
 | 
				
			||||||
 | 
					        String serializedTestStringWithOffsetTime = "{\n"
 | 
				
			||||||
 | 
					                + "\"name\": \"codellama:13b\",\n"
 | 
				
			||||||
 | 
					                + "\"modified_at\": \"2023-11-04T14:56:49.277302595-07:00\",\n"
 | 
				
			||||||
 | 
					                + "\"size\": 7365960935,\n"
 | 
				
			||||||
 | 
					                + "\"digest\": \"9f438cb9cd581fc025612d27f7c1a6669ff83a8bb0ed86c94fcf4c5440555697\",\n"
 | 
				
			||||||
 | 
					                + "\"details\": {\n"
 | 
				
			||||||
 | 
					                + "\"format\": \"gguf\",\n"
 | 
				
			||||||
 | 
					                + "\"family\": \"llama\",\n"
 | 
				
			||||||
 | 
					                + "\"families\": null,\n"
 | 
				
			||||||
 | 
					                + "\"parameter_size\": \"13B\",\n"
 | 
				
			||||||
 | 
					                + "\"quantization_level\": \"Q4_0\"\n"
 | 
				
			||||||
 | 
					                + "}}";
 | 
				
			||||||
 | 
					        deserialize(serializedTestStringWithOffsetTime,Model.class);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testDeserializationOfModelResponseWithZuluTime(){
 | 
				
			||||||
 | 
					        String serializedTestStringWithZuluTimezone = "{\n"
 | 
				
			||||||
 | 
					                + "\"name\": \"codellama:13b\",\n"
 | 
				
			||||||
 | 
					                + "\"modified_at\": \"2023-11-04T14:56:49.277302595Z\",\n"
 | 
				
			||||||
 | 
					                + "\"size\": 7365960935,\n"
 | 
				
			||||||
 | 
					                + "\"digest\": \"9f438cb9cd581fc025612d27f7c1a6669ff83a8bb0ed86c94fcf4c5440555697\",\n"
 | 
				
			||||||
 | 
					                + "\"details\": {\n"
 | 
				
			||||||
 | 
					                + "\"format\": \"gguf\",\n"
 | 
				
			||||||
 | 
					                + "\"family\": \"llama\",\n"
 | 
				
			||||||
 | 
					                + "\"families\": null,\n"
 | 
				
			||||||
 | 
					                + "\"parameter_size\": \"13B\",\n"
 | 
				
			||||||
 | 
					                + "\"quantization_level\": \"Q4_0\"\n"
 | 
				
			||||||
 | 
					                + "}}";
 | 
				
			||||||
 | 
					        deserialize(serializedTestStringWithZuluTimezone,Model.class);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user