Ollama4j
A Java library (wrapper/binding) for Ollama server.
Loading...
Searching...
No Matches
OllamaChatRequestBuilder.java
Go to the documentation of this file.
1package io.github.ollama4j.models.chat;
2
3import io.github.ollama4j.utils.Options;
4import io.github.ollama4j.utils.Utils;
5import org.slf4j.Logger;
6import org.slf4j.LoggerFactory;
7
8import java.io.File;
9import java.io.IOException;
10import java.net.URISyntaxException;
11import java.nio.file.Files;
12import java.util.ArrayList;
13import java.util.Collections;
14import java.util.List;
15import java.util.stream.Collectors;
16
20public class OllamaChatRequestBuilder {
21
22 private static final Logger LOG = LoggerFactory.getLogger(OllamaChatRequestBuilder.class);
23
24 private OllamaChatRequestBuilder(String model, List<OllamaChatMessage> messages) {
25 request = new OllamaChatRequest(model, messages);
26 }
27
28 private OllamaChatRequest request;
29
30 public static OllamaChatRequestBuilder getInstance(String model) {
31 return new OllamaChatRequestBuilder(model, new ArrayList<>());
32 }
33
35 return request;
36 }
37
38 public void reset() {
39 request = new OllamaChatRequest(request.getModel(), new ArrayList<>());
40 }
41
42 public OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content){
43 return withMessage(role,content, Collections.emptyList());
44 }
45
46 public OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List<OllamaChatToolCalls> toolCalls,List<File> images) {
47 List<OllamaChatMessage> messages = this.request.getMessages();
48
49 List<byte[]> binaryImages = images.stream().map(file -> {
50 try {
51 return Files.readAllBytes(file.toPath());
52 } catch (IOException e) {
53 LOG.warn("File '{}' could not be accessed, will not add to message!", file.toPath(), e);
54 return new byte[0];
55 }
56 }).collect(Collectors.toList());
57
58 messages.add(new OllamaChatMessage(role, content,toolCalls, binaryImages));
59 return this;
60 }
61
62 public OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content,List<OllamaChatToolCalls> toolCalls, String... imageUrls) {
63 List<OllamaChatMessage> messages = this.request.getMessages();
64 List<byte[]> binaryImages = null;
65 if (imageUrls.length > 0) {
66 binaryImages = new ArrayList<>();
67 for (String imageUrl : imageUrls) {
68 try {
69 binaryImages.add(Utils.loadImageBytesFromUrl(imageUrl));
70 } catch (URISyntaxException e) {
71 LOG.warn("URL '{}' could not be accessed, will not add to message!", imageUrl, e);
72 } catch (IOException e) {
73 LOG.warn("Content of URL '{}' could not be read, will not add to message!", imageUrl, e);
74 }
75 }
76 }
77
78 messages.add(new OllamaChatMessage(role, content,toolCalls, binaryImages));
79 return this;
80 }
81
82 public OllamaChatRequestBuilder withMessages(List<OllamaChatMessage> messages) {
83 return new OllamaChatRequestBuilder(request.getModel(), messages);
84 }
85
86 public OllamaChatRequestBuilder withOptions(Options options) {
87 this.request.setOptions(options.getOptionsMap());
88 return this;
89 }
90
91 public OllamaChatRequestBuilder withGetJsonResponse() {
92 this.request.setReturnFormatJson(true);
93 return this;
94 }
95
96 public OllamaChatRequestBuilder withTemplate(String template) {
97 this.request.setTemplate(template);
98 return this;
99 }
100
101 public OllamaChatRequestBuilder withStreaming() {
102 this.request.setStream(true);
103 return this;
104 }
105
106 public OllamaChatRequestBuilder withKeepAlive(String keepAlive) {
107 this.request.setKeepAlive(keepAlive);
108 return this;
109 }
110
111}
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, List< File > images)
OllamaChatRequestBuilder withMessages(List< OllamaChatMessage > messages)
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content)
static OllamaChatRequestBuilder getInstance(String model)
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, String... imageUrls)
static byte[] loadImageBytesFromUrl(String imageUrl)
Definition Utils.java:25