9package io.github.ollama4j.models.chat;
11import io.github.ollama4j.models.request.OllamaCommonRequest;
12import io.github.ollama4j.models.request.ThinkMode;
13import io.github.ollama4j.models.request.ThinkModeSerializer;
14import io.github.ollama4j.tools.Tools;
15import io.github.ollama4j.utils.OllamaRequestBody;
16import io.github.ollama4j.utils.Options;
18import java.util.ArrayList;
19import java.util.Collections;
36 private List<OllamaChatMessage> messages =
new ArrayList<>();
38 private List<
Tools.
Tool> tools =
new ArrayList<>();
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,
new ArrayList<>());
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");
148 this.setStream(
true);
158 this.setThink(think);
163 this.setUseTools(useTools);
168 this.setTools(tools);
178 if (this.messages ==
null || this.messages == Collections.EMPTY_LIST) {
179 this.messages =
new ArrayList<>();
181 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 withTools(List< Tools.Tool > tools)
OllamaChatRequest withThinking(ThinkMode think)
OllamaChatRequest withFormat(Map< String, Object > format)
OllamaChatRequest withUseTools(boolean useTools)
OllamaChatRequest(String model, ThinkMode think, List< OllamaChatMessage > messages)
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 withKeepAlive(String keepAlive)
Map< String, Object > options