69 ollamaRequestModel.setStream(
true);
70 HttpClient httpClient = HttpClient.newHttpClient();
71 long startTime = System.currentTimeMillis();
74 HttpResponse<InputStream>
response = httpClient.send(
request, HttpResponse.BodyHandlers.ofInputStream());
75 int statusCode =
response.statusCode();
76 this.httpStatusCode = statusCode;
78 InputStream responseBodyStream =
response.body();
79 BufferedReader reader =
null;
81 reader =
new BufferedReader(
new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8));
83 StringBuilder thinkingBuffer =
new StringBuilder();
84 StringBuilder responseBuffer =
new StringBuilder();
85 while ((line = reader.readLine()) !=
null) {
86 if (statusCode == 404) {
88 responseStream.add(ollamaResponseModel.getError());
89 responseBuffer.append(ollamaResponseModel.getError());
92 String thinkingTokens = ollamaResponseModel.getThinking();
93 String responseTokens = ollamaResponseModel.getResponse();
94 if (thinkingTokens ==
null) {
97 if (responseTokens ==
null) {
100 thinkingResponseStream.add(thinkingTokens);
101 responseStream.add(responseTokens);
102 if (!ollamaResponseModel.isDone()) {
103 responseBuffer.append(responseTokens);
104 thinkingBuffer.append(thinkingTokens);
108 this.succeeded =
true;
109 this.completeThinkingResponse = thinkingBuffer.toString();
110 this.completeResponse = responseBuffer.toString();
111 long endTime = System.currentTimeMillis();
112 responseTime = endTime - startTime;
114 if (reader !=
null) {
117 }
catch (IOException e) {
121 if (responseBodyStream !=
null) {
123 responseBodyStream.close();
124 }
catch (IOException e) {
129 if (statusCode != 200) {
133 this.succeeded =
false;
134 this.completeResponse =
"[FAILED] " + e.getMessage();