Ollama4j
A Java library (wrapper/binding) for Ollama server.
Loading...
Searching...
No Matches
OllamaChatStreamObserver.java
Go to the documentation of this file.
1package io.github.ollama4j.models.chat;
2
3import io.github.ollama4j.models.generate.OllamaStreamHandler;
4import io.github.ollama4j.models.generate.OllamaTokenHandler;
5import lombok.RequiredArgsConstructor;
6
7@RequiredArgsConstructor
9 private final OllamaStreamHandler thinkingStreamHandler;
10 private final OllamaStreamHandler responseStreamHandler;
11
12 private String message = "";
13
14 @Override
15 public void accept(OllamaChatResponseModel token) {
16 if (responseStreamHandler == null || token == null || token.getMessage() == null) {
17 return;
18 }
19
20 String thinking = token.getMessage().getThinking();
21 String content = token.getMessage().getContent();
22
23 boolean hasThinking = thinking != null && !thinking.isEmpty();
24 boolean hasContent = !content.isEmpty();
25
26// if (hasThinking && !hasContent) {
28// message = thinking;
29// } else {
31// message = content;
32// }
33//
34// responseStreamHandler.accept(message);
35
36
37 if (!hasContent && hasThinking && thinkingStreamHandler != null) {
38 // message = message + thinking;
39
40 // use only new tokens received, instead of appending the tokens to the previous
41 // ones and sending the full string again
42 thinkingStreamHandler.accept(thinking);
43 } else if (hasContent && responseStreamHandler != null) {
44 // message = message + response;
45
46 // use only new tokens received, instead of appending the tokens to the previous
47 // ones and sending the full string again
48 responseStreamHandler.accept(content);
49 }
50 }
51}