1package io.github.ollama4j.models.chat;
3import io.github.ollama4j.utils.Options;
4import io.github.ollama4j.utils.Utils;
5import org.slf4j.Logger;
6import org.slf4j.LoggerFactory;
9import java.io.IOException;
10import java.net.URISyntaxException;
11import java.nio.file.Files;
12import java.util.ArrayList;
13import java.util.Collections;
15import java.util.stream.Collectors;
20public class OllamaChatRequestBuilder {
22 private static final Logger LOG = LoggerFactory.getLogger(OllamaChatRequestBuilder.class);
24 private OllamaChatRequestBuilder(String model, List<OllamaChatMessage> messages) {
30 public static OllamaChatRequestBuilder
getInstance(String model) {
31 return new OllamaChatRequestBuilder(model,
new ArrayList<>());
43 return withMessage(role,content, Collections.emptyList());
47 List<OllamaChatMessage> messages = this.request.getMessages();
49 List<byte[]> binaryImages = images.
stream().map(file -> {
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);
56 }).collect(Collectors.toList());
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) {
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);
82 public OllamaChatRequestBuilder
withMessages(List<OllamaChatMessage> messages) {
83 return new OllamaChatRequestBuilder(request.getModel(), messages);
87 this.request.setOptions(options.getOptionsMap());
92 this.request.setReturnFormatJson(
true);
97 this.request.setTemplate(template);
102 this.request.setStream(
true);
107 this.request.setKeepAlive(keepAlive);
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, List< File > images)
OllamaChatRequestBuilder withKeepAlive(String keepAlive)
OllamaChatRequestBuilder withGetJsonResponse()
OllamaChatRequestBuilder withMessages(List< OllamaChatMessage > messages)
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content)
OllamaChatRequest build()
static OllamaChatRequestBuilder getInstance(String model)
OllamaChatRequestBuilder withStreaming()
OllamaChatRequestBuilder withMessage(OllamaChatMessageRole role, String content, List< OllamaChatToolCalls > toolCalls, String... imageUrls)
OllamaChatRequestBuilder withTemplate(String template)
OllamaChatRequestBuilder withOptions(Options options)
static byte[] loadImageBytesFromUrl(String imageUrl)