45 if (ollamaResponseModel.getResponse() !=
null) {
46 responseBuffer.append(ollamaResponseModel.getResponse());
48 if (ollamaResponseModel.getThinking() !=
null) {
49 thinkingBuffer.append(ollamaResponseModel.getThinking());
51 if (responseStreamObserver !=
null) {
52 responseStreamObserver.notify(ollamaResponseModel);
54 return ollamaResponseModel.isDone();
55 }
catch (JsonProcessingException e) {
56 LOG.error(
"Error parsing the Ollama chat response!", e);
78 long startTime = System.currentTimeMillis();
79 HttpClient httpClient = HttpClient.newHttpClient();
82 HttpRequest
request = requestBuilder.build();
83 if (isVerbose()) LOG.info(
"Asking model: {}", body);
84 HttpResponse<InputStream>
response = httpClient.send(
request, HttpResponse.BodyHandlers.ofInputStream());
86 int statusCode =
response.statusCode();
87 InputStream responseBodyStream =
response.body();
88 StringBuilder responseBuffer =
new StringBuilder();
89 StringBuilder thinkingBuffer =
new StringBuilder();
91 try (BufferedReader reader =
new BufferedReader(
new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8))) {
93 while ((line = reader.readLine()) !=
null) {
94 if (statusCode == 404) {
95 LOG.warn(
"Status code: 404 (Not Found)");
97 responseBuffer.append(ollamaResponseModel.getError());
98 }
else if (statusCode == 401) {
99 LOG.warn(
"Status code: 401 (Unauthorized)");
101 responseBuffer.append(ollamaResponseModel.getError());
102 }
else if (statusCode == 400) {
103 LOG.warn(
"Status code: 400 (Bad Request)");
105 responseBuffer.append(ollamaResponseModel.getError());
116 if (statusCode != 200) {
117 LOG.error(
"Status code: {}", statusCode);
120 long endTime = System.currentTimeMillis();
121 OllamaResult ollamaResult =
new OllamaResult(responseBuffer.toString(), thinkingBuffer.toString(), endTime - startTime, statusCode);
123 ollamaResult.setModel(ollamaGenerateResponseModel.getModel());
124 ollamaResult.setCreatedAt(ollamaGenerateResponseModel.getCreatedAt());
125 ollamaResult.setDone(ollamaGenerateResponseModel.isDone());
126 ollamaResult.setDoneReason(ollamaGenerateResponseModel.getDoneReason());
127 ollamaResult.setContext(ollamaGenerateResponseModel.getContext());
128 ollamaResult.setTotalDuration(ollamaGenerateResponseModel.getTotalDuration());
129 ollamaResult.setLoadDuration(ollamaGenerateResponseModel.getLoadDuration());
130 ollamaResult.setPromptEvalCount(ollamaGenerateResponseModel.getPromptEvalCount());
131 ollamaResult.setPromptEvalDuration(ollamaGenerateResponseModel.getPromptEvalDuration());
132 ollamaResult.setEvalCount(ollamaGenerateResponseModel.getEvalCount());
133 ollamaResult.setEvalDuration(ollamaGenerateResponseModel.getEvalDuration());
135 if (isVerbose()) LOG.info(
"Model response: {}", ollamaResult);