diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/chat/OllamaChatMessage.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/chat/OllamaChatMessage.java index f8cca73..85d2a17 100644 --- a/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/chat/OllamaChatMessage.java +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/models/chat/OllamaChatMessage.java @@ -3,6 +3,10 @@ package io.github.amithkoujalgi.ollama4j.core.models.chat; import static io.github.amithkoujalgi.ollama4j.core.utils.Utils.getObjectMapper; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + +import io.github.amithkoujalgi.ollama4j.core.utils.FileToBase64Serializer; + import java.io.File; import java.util.List; import lombok.AllArgsConstructor; @@ -28,6 +32,7 @@ public class OllamaChatMessage { @NonNull private String content; + @JsonSerialize(using = FileToBase64Serializer.class) private List images; @Override diff --git a/src/main/java/io/github/amithkoujalgi/ollama4j/core/utils/FileToBase64Serializer.java b/src/main/java/io/github/amithkoujalgi/ollama4j/core/utils/FileToBase64Serializer.java new file mode 100644 index 0000000..8151963 --- /dev/null +++ b/src/main/java/io/github/amithkoujalgi/ollama4j/core/utils/FileToBase64Serializer.java @@ -0,0 +1,31 @@ +package io.github.amithkoujalgi.ollama4j.core.utils; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.util.Base64; +import java.util.Collection; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +public class FileToBase64Serializer extends JsonSerializer> { + + @Override + public void serialize(Collection value, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException { + jsonGenerator.writeStartArray(); + for (File file : value) { + jsonGenerator.writeString(Base64.getEncoder().encodeToString(serialize(file))); + } + jsonGenerator.writeEndArray(); + } + + public static byte[] serialize(Object obj) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ObjectOutputStream os = new ObjectOutputStream(out); + os.writeObject(obj); + return out.toByteArray(); + } +} \ No newline at end of file