Ollama4j
A Java library (wrapper/binding) for Ollama server.
Loading...
Searching...
No Matches
OllamaGenerateStreamObserver.java
Go to the documentation of this file.
1package io.github.ollama4j.models.generate;
2
3import java.util.ArrayList;
4import java.util.List;
5
7
8 private final OllamaStreamHandler thinkingStreamHandler;
9 private final OllamaStreamHandler responseStreamHandler;
10
11 private final List<OllamaGenerateResponseModel> responseParts = new ArrayList<>();
12
13 private String message = "";
14
15 public OllamaGenerateStreamObserver(OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler) {
16 this.responseStreamHandler = responseStreamHandler;
17 this.thinkingStreamHandler = thinkingStreamHandler;
18 }
19
20 public void notify(OllamaGenerateResponseModel currentResponsePart) {
21 responseParts.add(currentResponsePart);
22 handleCurrentResponsePart(currentResponsePart);
23 }
24
25 protected void handleCurrentResponsePart(OllamaGenerateResponseModel currentResponsePart) {
26 String response = currentResponsePart.getResponse();
27 String thinking = currentResponsePart.getThinking();
28
29 boolean hasResponse = response != null && !response.isEmpty();
30 boolean hasThinking = thinking != null && !thinking.isEmpty();
31
32 if (!hasResponse && hasThinking && thinkingStreamHandler != null) {
33 // message = message + thinking;
34
35 // use only new tokens received, instead of appending the tokens to the previous
36 // ones and sending the full string again
37 thinkingStreamHandler.accept(thinking);
38 } else if (hasResponse && responseStreamHandler != null) {
39 // message = message + response;
40
41 // use only new tokens received, instead of appending the tokens to the previous
42 // ones and sending the full string again
43 responseStreamHandler.accept(response);
44 }
45 }
46}
void notify(OllamaGenerateResponseModel currentResponsePart)
void handleCurrentResponsePart(OllamaGenerateResponseModel currentResponsePart)
OllamaGenerateStreamObserver(OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler)