forked from Mirror/ollama4j
		
	Compare commits
	
		
			27 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 33ebd088c4 | |||
| caf632ec8b | |||
| 62f3c3efa5 | |||
| 613e152e7d | |||
|   | bb0785140b | ||
|   | e33ad1a1e3 | ||
|   | cd60c506cb | ||
|   | b55925df28 | ||
|   | 3a9b8c309d | ||
|   | bf07159522 | ||
|   | f8ca4d041d | ||
|   | 9c6a55f7b0 | ||
|   | 2866d83a2f | ||
|   | 45e5d07581 | ||
|   | 3a264cb6bb | ||
|   | e1b9d42771 | ||
|   | 1a086c37c0 | ||
|   | 54edba144c | ||
|   | 3ed3187ba9 | ||
|   | b7cd81a7f5 | ||
|   | e750c2d7f9 | ||
|   | 62f16131f3 | ||
|   | 2cbaf12d7c | ||
|   | e2d555d404 | ||
|   | c296b34174 | ||
|   | e8f99f28ec | ||
|   | 250b1abc79 | 
							
								
								
									
										31
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								README.md
									
									
									
									
									
								
							| @@ -67,10 +67,29 @@ In your Maven project, add this dependency: | ||||
| <dependency> | ||||
|     <groupId>io.github.amithkoujalgi</groupId> | ||||
|     <artifactId>ollama4j</artifactId> | ||||
|     <version>1.0.57</version> | ||||
|     <version>1.0.70</version> | ||||
| </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: | ||||
|  | ||||
|  | ||||
| @@ -110,6 +129,16 @@ make it | ||||
| Releases (newer artifact versions) are done automatically on pushing the code to the `main` branch through GitHub | ||||
| Actions CI workflow. | ||||
|  | ||||
| #### Who's using Ollama4j? | ||||
|  | ||||
| - `Datafaker`: a library to generate fake data | ||||
|     - https://github.com/datafaker-net/datafaker-experimental/tree/main/ollama-api | ||||
| - `Vaadin Web UI`: UI-Tester for Interactions with Ollama via ollama4j | ||||
|     - https://github.com/TEAMPB/ollama4j-vaadin-ui | ||||
| - `ollama-translator`: Minecraft 1.20.6 spigot plugin allows to easily break language barriers by using ollama on the | ||||
|   server to translate all messages into a specfic target language. | ||||
|     - https://github.com/liebki/ollama-translator | ||||
|  | ||||
| #### Traction | ||||
|  | ||||
| [](https://star-history.com/#amithkoujalgi/ollama4j&Date) | ||||
|   | ||||
							
								
								
									
										26
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  | ||||
|     <groupId>io.github.amithkoujalgi</groupId> | ||||
|     <artifactId>ollama4j</artifactId> | ||||
|     <version>1.0.67</version> | ||||
|     <version>1.0.72-1</version> | ||||
|  | ||||
|     <name>Ollama4j</name> | ||||
|     <description>Java library for interacting with Ollama API.</description> | ||||
| @@ -39,7 +39,7 @@ | ||||
|         <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection> | ||||
|         <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection> | ||||
|         <url>https://github.com/amithkoujalgi/ollama4j</url> | ||||
|         <tag>v1.0.67</tag> | ||||
|         <tag>v1.0.16</tag> | ||||
|     </scm> | ||||
|  | ||||
|     <build> | ||||
| @@ -139,6 +139,13 @@ | ||||
|         </plugins> | ||||
|     </build> | ||||
|  | ||||
|     <repositories> | ||||
|         <repository> | ||||
|             <id>gitea</id> | ||||
|             <url>https://gitea.seeseepuff.be/api/packages/seeseemelk/maven</url> | ||||
|         </repository> | ||||
|     </repositories> | ||||
|  | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
| @@ -149,7 +156,12 @@ | ||||
|         <dependency> | ||||
|             <groupId>com.fasterxml.jackson.core</groupId> | ||||
|             <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> | ||||
|             <groupId>ch.qos.logback</groupId> | ||||
| @@ -184,12 +196,12 @@ | ||||
|  | ||||
|     <distributionManagement> | ||||
|         <snapshotRepository> | ||||
|             <id>ossrh</id> | ||||
|             <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> | ||||
|             <id>gitea</id> | ||||
|             <url>https://gitea.seeseepuff.be/api/packages/seeseemelk/maven</url> | ||||
|         </snapshotRepository> | ||||
|         <repository> | ||||
|             <id>ossrh</id> | ||||
|             <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2</url> | ||||
|             <id>gitea</id> | ||||
|             <url>https://gitea.seeseepuff.be/api/packages/seeseemelk/maven</url> | ||||
|         </repository> | ||||
|     </distributionManagement> | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,8 @@ | ||||
| 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.core.JsonProcessingException; | ||||
| import io.github.amithkoujalgi.ollama4j.core.utils.Utils; | ||||
| @@ -11,7 +14,9 @@ public class Model { | ||||
|   private String name; | ||||
|   private String model; | ||||
|   @JsonProperty("modified_at") | ||||
|   private String modifiedAt; | ||||
|   private OffsetDateTime modifiedAt; | ||||
|   @JsonProperty("expires_at") | ||||
|   private OffsetDateTime expiresAt; | ||||
|   private String digest; | ||||
|   private long size; | ||||
|   @JsonProperty("details") | ||||
|   | ||||
| @@ -16,17 +16,11 @@ public class OllamaChatResult extends OllamaResult{ | ||||
|             List<OllamaChatMessage> chatHistory) { | ||||
|         super(response, responseTime, httpStatusCode); | ||||
|         this.chatHistory = chatHistory; | ||||
|         appendAnswerToChatHistory(response); | ||||
|     } | ||||
|  | ||||
|     public List<OllamaChatMessage> getChatHistory() { | ||||
|         return chatHistory; | ||||
|     } | ||||
|      | ||||
|     private void appendAnswerToChatHistory(String answer){ | ||||
|         OllamaChatMessage assistantMessage = new OllamaChatMessage(OllamaChatMessageRole.ASSISTANT, answer); | ||||
|         this.chatHistory.add(assistantMessage); | ||||
|     } | ||||
|      | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -11,8 +11,6 @@ public class OllamaChatStreamObserver { | ||||
|  | ||||
|     private List<OllamaChatResponseModel> responseParts = new ArrayList<>(); | ||||
|  | ||||
|     private String message = ""; | ||||
|  | ||||
|     public OllamaChatStreamObserver(OllamaStreamHandler streamHandler) { | ||||
|         this.streamHandler = streamHandler; | ||||
|     } | ||||
| @@ -23,8 +21,7 @@ public class OllamaChatStreamObserver { | ||||
|     } | ||||
|      | ||||
|     protected void handleCurrentResponsePart(OllamaChatResponseModel currentResponsePart){ | ||||
|         message = message + currentResponsePart.getMessage().getContent(); | ||||
|         streamHandler.accept(message); | ||||
|         streamHandler.accept(currentResponsePart.getMessage().getContent()); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -8,10 +8,18 @@ import java.net.URISyntaxException; | ||||
| import java.net.URL; | ||||
|  | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | ||||
|  | ||||
| public class Utils { | ||||
|  | ||||
|   private static ObjectMapper objectMapper; | ||||
|  | ||||
|   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) | ||||
|   | ||||
| @@ -6,30 +6,30 @@ import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import io.github.amithkoujalgi.ollama4j.core.utils.Utils; | ||||
| 
 | ||||
| public abstract class AbstractRequestSerializationTest<T> { | ||||
| public abstract class AbstractSerializationTest<T> { | ||||
| 
 | ||||
|     protected ObjectMapper mapper = Utils.getObjectMapper(); | ||||
| 
 | ||||
|     protected String serializeRequest(T req) { | ||||
|     protected String serialize(T obj) { | ||||
|         try { | ||||
|             return mapper.writeValueAsString(req); | ||||
|             return mapper.writeValueAsString(obj); | ||||
|         } catch (JsonProcessingException e) { | ||||
|             fail("Could not serialize request!", e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     protected T deserializeRequest(String jsonRequest, Class<T> requestClass) { | ||||
|     protected T deserialize(String jsonObject, Class<T> deserializationClass) { | ||||
|         try { | ||||
|             return mapper.readValue(jsonRequest, requestClass); | ||||
|             return mapper.readValue(jsonObject, deserializationClass); | ||||
|         } catch (JsonProcessingException e) { | ||||
|             fail("Could not deserialize jsonRequest!", e); | ||||
|             fail("Could not deserialize jsonObject!", e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     protected void assertEqualsAfterUnmarshalling(T unmarshalledRequest, | ||||
|     protected void assertEqualsAfterUnmarshalling(T unmarshalledObject, | ||||
|         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.utils.OptionsBuilder; | ||||
|  | ||||
| public class TestChatRequestSerialization extends AbstractRequestSerializationTest<OllamaChatRequestModel>{ | ||||
| public class TestChatRequestSerialization extends AbstractSerializationTest<OllamaChatRequestModel> { | ||||
|  | ||||
|     private OllamaChatRequestBuilder builder; | ||||
|  | ||||
| @@ -26,8 +26,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|     @Test | ||||
|     public void testRequestOnlyMandatoryFields() { | ||||
|         OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt").build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -35,16 +35,16 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|         OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.SYSTEM, "System prompt") | ||||
|         .withMessage(OllamaChatMessageRole.USER, "Some prompt") | ||||
|         .build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testRequestWithMessageAndImage() { | ||||
|         OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt", | ||||
|                 List.of(new File("src/test/resources/dog-on-a-boat.jpg"))).build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -61,8 +61,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|             .withOptions(b.setTopP(1).build()) | ||||
|             .build(); | ||||
|  | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         OllamaChatRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaChatRequestModel.class); | ||||
|         String jsonRequest = serialize(req); | ||||
|         OllamaChatRequestModel deserializeRequest = deserialize(jsonRequest, OllamaChatRequestModel.class); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest, req); | ||||
|         assertEquals(1, deserializeRequest.getOptions().get("mirostat")); | ||||
|         assertEquals(1.0, deserializeRequest.getOptions().get("temperature")); | ||||
| @@ -79,7 +79,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|         OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt") | ||||
|                 .withGetJsonResponse().build(); | ||||
|  | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         // no jackson deserialization as format property is not boolean ==> omit as deserialization | ||||
|         // of request is never used in real code anyways | ||||
|         JSONObject jsonObject = new JSONObject(jsonRequest); | ||||
| @@ -91,15 +91,15 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|     public void testWithTemplate() { | ||||
|         OllamaChatRequestModel req = builder.withTemplate("System Template") | ||||
|             .build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaChatRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaChatRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testWithStreaming() { | ||||
|         OllamaChatRequestModel req = builder.withStreaming().build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).isStream(), true); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEquals(deserialize(jsonRequest, OllamaChatRequestModel.class).isStream(), true); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -107,7 +107,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe | ||||
|         String expectedKeepAlive = "5m"; | ||||
|         OllamaChatRequestModel req = builder.withKeepAlive(expectedKeepAlive) | ||||
|             .build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).getKeepAlive(), expectedKeepAlive); | ||||
|         String jsonRequest = serialize(req); | ||||
|         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.utils.OptionsBuilder; | ||||
|  | ||||
| public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializationTest<OllamaEmbeddingsRequestModel>{ | ||||
| public class TestEmbeddingsRequestSerialization extends AbstractSerializationTest<OllamaEmbeddingsRequestModel> { | ||||
|  | ||||
|         private OllamaEmbeddingsRequestBuilder builder; | ||||
|  | ||||
| @@ -19,8 +19,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa | ||||
|             @Test | ||||
|     public void testRequestOnlyMandatoryFields() { | ||||
|         OllamaEmbeddingsRequestModel req = builder.build(); | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|         @Test | ||||
| @@ -29,8 +29,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa | ||||
|             OllamaEmbeddingsRequestModel req = builder | ||||
|                     .withOptions(b.setMirostat(1).build()).build(); | ||||
|  | ||||
|             String jsonRequest = serializeRequest(req); | ||||
|             OllamaEmbeddingsRequestModel deserializeRequest = deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class); | ||||
|             String jsonRequest = serialize(req); | ||||
|             OllamaEmbeddingsRequestModel deserializeRequest = deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class); | ||||
|             assertEqualsAfterUnmarshalling(deserializeRequest, req); | ||||
|             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.utils.OptionsBuilder; | ||||
|  | ||||
| public class TestGenerateRequestSerialization extends AbstractRequestSerializationTest<OllamaGenerateRequestModel>{ | ||||
| public class TestGenerateRequestSerialization extends AbstractSerializationTest<OllamaGenerateRequestModel> { | ||||
|  | ||||
|     private OllamaGenerateRequestBuilder builder; | ||||
|  | ||||
| @@ -24,8 +24,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati | ||||
|     public void testRequestOnlyMandatoryFields() { | ||||
|         OllamaGenerateRequestModel req = builder.withPrompt("Some prompt").build(); | ||||
|  | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class), req); | ||||
|         String jsonRequest = serialize(req); | ||||
|         assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaGenerateRequestModel.class), req); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -34,8 +34,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati | ||||
|         OllamaGenerateRequestModel req = | ||||
|                 builder.withPrompt("Some prompt").withOptions(b.setMirostat(1).build()).build(); | ||||
|  | ||||
|         String jsonRequest = serializeRequest(req); | ||||
|         OllamaGenerateRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class); | ||||
|         String jsonRequest = serialize(req); | ||||
|         OllamaGenerateRequestModel deserializeRequest = deserialize(jsonRequest, OllamaGenerateRequestModel.class); | ||||
|         assertEqualsAfterUnmarshalling(deserializeRequest, req); | ||||
|         assertEquals(1, deserializeRequest.getOptions().get("mirostat")); | ||||
|     } | ||||
| @@ -45,7 +45,7 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati | ||||
|         OllamaGenerateRequestModel req = | ||||
|                 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 | ||||
|         // of request is never used in real code anyways | ||||
|         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