Ollama4j
A Java library (wrapper/binding) for Ollama server.
Loading...
Searching...
No Matches
OllamaGenerateStreamObserver.java
Go to the documentation of this file.
1/*
2 * Ollama4j - Java library for interacting with Ollama server.
3 * Copyright (c) 2025 Amith Koujalgi and contributors.
4 *
5 * Licensed under the MIT License (the "License");
6 * you may not use this file except in compliance with the License.
7 *
8*/
9package io.github.ollama4j.models.generate;
10
11import java.util.ArrayList;
12import java.util.List;
13import lombok.Getter;
14
15@Getter
17 private final OllamaGenerateTokenHandler thinkingStreamHandler;
18 private final OllamaGenerateTokenHandler responseStreamHandler;
19
20 private final List<OllamaGenerateResponseModel> responseParts = new ArrayList<>();
21
23 OllamaGenerateTokenHandler thinkingStreamHandler,
24 OllamaGenerateTokenHandler responseStreamHandler) {
25 this.thinkingStreamHandler = thinkingStreamHandler;
26 this.responseStreamHandler = responseStreamHandler;
27 }
28
29 public void notify(OllamaGenerateResponseModel currentResponsePart) {
30 responseParts.add(currentResponsePart);
31 handleCurrentResponsePart(currentResponsePart);
32 }
33
34 protected void handleCurrentResponsePart(OllamaGenerateResponseModel currentResponsePart) {
35 String response = currentResponsePart.getResponse();
36 String thinking = currentResponsePart.getThinking();
37
38 boolean hasResponse = response != null && !response.isEmpty();
39 boolean hasThinking = thinking != null && !thinking.isEmpty();
40
41 if (!hasResponse && hasThinking && thinkingStreamHandler != null) {
42 thinkingStreamHandler.accept(thinking);
43 } else if (hasResponse && responseStreamHandler != null) {
44 responseStreamHandler.accept(response);
45 }
46 }
47}
void notify(OllamaGenerateResponseModel currentResponsePart)
OllamaGenerateStreamObserver(OllamaGenerateTokenHandler thinkingStreamHandler, OllamaGenerateTokenHandler responseStreamHandler)
void handleCurrentResponsePart(OllamaGenerateResponseModel currentResponsePart)