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, false, 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(), request.isThink(), 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) {
47 List<OllamaChatMessage> messages = this.request.getMessages();
48 messages.add(new OllamaChatMessage(role, content, null, toolCalls, null));
49 return this;
50 }
51
52 public OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List<OllamaChatToolCalls> toolCalls, List<File> images) {
53 List<OllamaChatMessage> messages = this.request.getMessages();
54
55 List<byte[]> binaryImages = images.stream().map(file -> {
56 try {
57 return Files.readAllBytes(file.toPath());
58 } catch (IOException e) {
59 LOG.warn("File '{}' could not be accessed, will not add to message!", file.toPath(), e);
60 return new byte[0];
61 }
62 }).collect(Collectors.toList());
63
64 messages.add(new OllamaChatMessage(role, content, null, toolCalls, binaryImages));
65 return this;
66 }
67
68 public OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List<OllamaChatToolCalls> toolCalls, String... imageUrls) {
69 List<OllamaChatMessage> messages = this.request.getMessages();
70 List<byte[]> binaryImages = null;
71 if (imageUrls.length > 0) {
72 binaryImages = new ArrayList<>();
73 for (String imageUrl : imageUrls) {
74 try {
75 binaryImages.add(Utils.loadImageBytesFromUrl(imageUrl));
76 } catch (URISyntaxException e) {
77 LOG.warn("URL '{}' could not be accessed, will not add to message!", imageUrl, e);
78 } catch (IOException e) {
79 LOG.warn("Content of URL '{}' could not be read, will not add to message!", imageUrl, e);
80 }
81 }
82 }
83
84 messages.add(new OllamaChatMessage(role, content, null, toolCalls, binaryImages));
85 return this;
86 }
87
88 public OllamaChatRequestBuilder withMessages(List<OllamaChatMessage> messages) {
89 return new OllamaChatRequestBuilder(request.getModel(), messages);
90 }
91
92 public OllamaChatRequestBuilder withOptions(Options options) {
93 this.request.setOptions(options.getOptionsMap());
94 return this;
95 }
96
97 public OllamaChatRequestBuilder withGetJsonResponse() {
98 this.request.setReturnFormatJson(true);
99 return this;
100 }
101
102 public OllamaChatRequestBuilder withTemplate(String template) {
103 this.request.setTemplate(template);
104 return this;
105 }
106
107 public OllamaChatRequestBuilder withStreaming() {
108 this.request.setStream(true);
109 return this;
110 }
111
112 public OllamaChatRequestBuilder withKeepAlive(String keepAlive) {
113 this.request.setKeepAlive(keepAlive);
114 return this;
115 }
116
117 public OllamaChatRequestBuilder withThinking(boolean think) {
118 this.request.setThink(think);
119 return this;
120 }
121}
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, List< File > images)
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls)
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:27