summaryrefslogtreecommitdiff
path: root/source/net
diff options
context:
space:
mode:
authorMichael Peter Christen <mc@yacy.net>2026-02-15 21:03:35 +0100
committerMichael Peter Christen <mc@yacy.net>2026-02-15 21:03:35 +0100
commit79c4c4e3dd0e3ca9ed859e7fc37a89f4fb6daf01 (patch)
treeee2f3a794c1bb7a53fb5b3e331201f3bf6d955c9 /source/net
parentb8387d451233965edabe556969d06ad3b53fc8b5 (diff)
fixed api-key handling
Diffstat (limited to 'source/net')
-rw-r--r--source/net/yacy/ai/LLM.java11
-rw-r--r--source/net/yacy/ai/ToolCallProtocol.java5
2 files changed, 11 insertions, 5 deletions
diff --git a/source/net/yacy/ai/LLM.java b/source/net/yacy/ai/LLM.java
index 6f882ea94..df0e82242 100644
--- a/source/net/yacy/ai/LLM.java
+++ b/source/net/yacy/ai/LLM.java
@@ -128,11 +128,14 @@ public class LLM {
// API Helper Methods
- private static String sendPostRequest(final String urls, final JSONObject data) throws IOException, URISyntaxException {
+ private static String sendPostRequest(final String urls, final JSONObject data, final String apiKey) throws IOException, URISyntaxException {
final URL url = new URI(urls).toURL();
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
+ if (apiKey != null && !apiKey.isEmpty()) {
+ conn.setRequestProperty("Authorization", "Bearer " + apiKey);
+ }
conn.setDoOutput(true);
try (OutputStream os = conn.getOutputStream()) {
@@ -208,7 +211,7 @@ public class LLM {
final JSONObject data = new JSONObject();
try {
data.put("name", name);
- sendPostRequest(this.hoststub + "/api/show", data);
+ sendPostRequest(this.hoststub + "/api/show", data, this.api_key);
return true;
} catch (JSONException | URISyntaxException | IOException e) {
return false;
@@ -220,7 +223,7 @@ public class LLM {
try {
data.put("name", name);
data.put("stream", false);
- final String response = sendPostRequest(this.hoststub + "/api/pull", data);
+ final String response = sendPostRequest(this.hoststub + "/api/pull", data, this.api_key);
// this sends {"status": "success"} in case of success
final JSONObject responseObject = new JSONObject(response);
final String status = responseObject.optString("status", "");
@@ -281,7 +284,7 @@ public class LLM {
data.put("response_format", response_format);
}
- final String response = sendPostRequest(this.hoststub + "/v1/chat/completions", data);
+ final String response = sendPostRequest(this.hoststub + "/v1/chat/completions", data, this.api_key);
final JSONObject responseObject = new JSONObject(response);
final JSONArray choices = responseObject.getJSONArray("choices");
final JSONObject choice = choices.getJSONObject(0);
diff --git a/source/net/yacy/ai/ToolCallProtocol.java b/source/net/yacy/ai/ToolCallProtocol.java
index 8f526beaa..68c575723 100644
--- a/source/net/yacy/ai/ToolCallProtocol.java
+++ b/source/net/yacy/ai/ToolCallProtocol.java
@@ -34,6 +34,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Logger;
import javax.servlet.ServletOutputStream;
@@ -121,6 +122,8 @@ public final class ToolCallProtocol {
final int status = conn.getResponseCode();
if (status == 200) {
handleInitialStreamAndContinue(out, conn, llm4Chat, preparedBody, messages, initialMetadata);
+ } else {
+ Logger.getLogger("ToolCallProtocoll").severe(status + " " + conn.getResponseMessage());
}
return status;
}
@@ -359,7 +362,7 @@ public final class ToolCallProtocol {
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
- if (!llm4Chat.llm.api_key.isEmpty()) {
+ if (llm4Chat.llm.api_key != null && !llm4Chat.llm.api_key.isEmpty()) {
conn.setRequestProperty("Authorization", "Bearer " + llm4Chat.llm.api_key);
}
conn.setDoOutput(true);