9package io.github.ollama4j.models.chat;
11import io.github.ollama4j.models.request.OllamaCommonRequest;
12import io.github.ollama4j.tools.Tools;
13import io.github.ollama4j.utils.OllamaRequestBody;
14import io.github.ollama4j.utils.Options;
16import java.util.ArrayList;
17import java.util.Collections;
33 private List<OllamaChatMessage> messages = Collections.emptyList();
37 private boolean think;
52 private boolean useTools =
true;
58 this.messages = messages;
67 return this.
toString().equals(o.toString());
74 req.setMessages(
new ArrayList<>());
84 return withMessage(role, content, Collections.emptyList());
89 if (this.messages ==
null || this.messages == Collections.EMPTY_LIST) {
90 this.messages =
new ArrayList<>();
99 List<OllamaChatToolCalls> toolCalls,
101 if (this.messages ==
null || this.messages == Collections.EMPTY_LIST) {
102 this.messages =
new ArrayList<>();
105 List<byte[]> imagesAsBytes =
new ArrayList<>();
106 if (images !=
null) {
107 for (File image : images) {
109 imagesAsBytes.add(java.nio.file.Files.readAllBytes(image.toPath()));
110 }
catch (java.io.IOException e) {
111 throw new RuntimeException(
112 "Failed to read image file: " + image.getAbsolutePath(), e);
116 this.messages.add(
new OllamaChatMessage(role, content,
null, toolCalls, imagesAsBytes));
121 this.setMessages(messages);
127 this.setOptions(
options.getOptionsMap());
133 this.setFormat(
"json");
143 this.setStream(
true);
153 this.setThink(think);
158 this.setUseTools(useTools);
163 this.setTools(tools);
173 if (this.messages ==
null || this.messages == Collections.EMPTY_LIST) {
174 this.messages =
new ArrayList<>();
176 this.messages.clear();
OllamaChatRequest withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, List< File > images)
OllamaChatRequest withModel(String model)
OllamaChatRequest withTemplate(String template)
OllamaChatRequest build()
static OllamaChatRequest builder()
OllamaChatRequest withGetJsonResponse()
OllamaChatRequest withStreaming()
OllamaChatRequest(String model, boolean think, List< OllamaChatMessage > messages)
OllamaChatRequest withTools(List< Tools.Tool > tools)
OllamaChatRequest withUseTools(boolean useTools)
OllamaChatRequest withMessage(OllamaChatMessageRole role, String content)
OllamaChatRequest withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls)
OllamaChatRequest withMessages(List< OllamaChatMessage > messages)
OllamaChatRequest withOptions(Options options)
OllamaChatRequest withThinking(boolean think)
OllamaChatRequest withKeepAlive(String keepAlive)
Map< String, Object > options