74 ollamaRequestModel.setStream(
true);
75 HttpClient httpClient = HttpClient.newHttpClient();
76 long startTime = System.currentTimeMillis();
81 HttpRequest.BodyPublishers.ofString(
83 .writeValueAsString(ollamaRequestModel)))
87 .timeout(Duration.ofSeconds(requestTimeoutSeconds))
89 HttpResponse<InputStream> response =
90 httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream());
91 int statusCode = response.statusCode();
92 this.httpStatusCode = statusCode;
94 InputStream responseBodyStream = response.body();
95 BufferedReader reader =
null;
99 new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8));
101 StringBuilder thinkingBuffer =
new StringBuilder();
102 StringBuilder responseBuffer =
new StringBuilder();
103 while ((line = reader.readLine()) !=
null) {
104 if (statusCode == 404) {
107 responseStream.add(ollamaResponseModel.getError());
108 responseBuffer.append(ollamaResponseModel.getError());
113 String thinkingTokens = ollamaResponseModel.getThinking();
114 String responseTokens = ollamaResponseModel.getResponse();
115 if (thinkingTokens ==
null) {
118 if (responseTokens ==
null) {
121 thinkingResponseStream.add(thinkingTokens);
122 responseStream.add(responseTokens);
123 if (!ollamaResponseModel.isDone()) {
124 responseBuffer.append(responseTokens);
125 thinkingBuffer.append(thinkingTokens);
129 this.succeeded =
true;
130 this.completeThinkingResponse = thinkingBuffer.toString();
131 this.completeResponse = responseBuffer.toString();
132 long endTime = System.currentTimeMillis();
133 responseTime = endTime - startTime;
135 if (reader !=
null) {
138 }
catch (IOException e) {
142 if (responseBodyStream !=
null) {
144 responseBodyStream.close();
145 }
catch (IOException e) {
150 if (statusCode != 200) {
153 }
catch (InterruptedException e) {
154 Thread.currentThread().interrupt();
155 this.succeeded =
false;
156 this.completeResponse =
"[FAILED] " + e.getMessage();
158 this.succeeded =
false;
159 this.completeResponse =
"[FAILED] " + e.getMessage();