From 0bfd27c6dff568fbc63ef877cf9da0c1d3c9732b Mon Sep 17 00:00:00 2001 From: Marcello Fitton <106866560+angelplusultra@users.noreply.github.com> Date: Mon, 30 Mar 2026 14:44:12 -0700 Subject: [PATCH] feat: add optional API key support for Lemonade provider (#5281) * add API key param to Lemonade LLM Provider and Embedding Provider * add LEMONADE_LLM_API_KEY to .env.example * add api key to aibitat provider * fix api key from being sent to frontend * fix tooltip id * add null fallback for `apiKey` * remove console log * add missing api keys --------- Co-authored-by: Timothy Carambat --- .../LemonadeOptions/index.jsx | 25 +++++++++++++ .../LLMSelection/LemonadeOptions/index.jsx | 37 +++++++++++++++++++ server/.env.example | 3 +- .../endpoints/utils/lemonadeUtilsEndpoints.js | 6 +++ server/models/systemSettings.js | 1 + server/utils/AiProviders/lemonade/index.js | 22 ++++++++--- .../utils/EmbeddingEngines/lemonade/index.js | 2 +- .../agents/aibitat/providers/ai-provider.js | 2 +- .../agents/aibitat/providers/lemonade.js | 2 +- server/utils/helpers/updateENV.js | 4 ++ 10 files changed, 94 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/EmbeddingSelection/LemonadeOptions/index.jsx b/frontend/src/components/EmbeddingSelection/LemonadeOptions/index.jsx index 3d12c0b4..1e1f3ee5 100644 --- a/frontend/src/components/EmbeddingSelection/LemonadeOptions/index.jsx +++ b/frontend/src/components/EmbeddingSelection/LemonadeOptions/index.jsx @@ -62,6 +62,31 @@ export default function LemonadeEmbeddingOptions({ settings }) { autoComplete="off" /> +
+
+ + + + The API key for your Lemonade instance + +
+ +
+
+
+ + + The API key for your Lemonade server + +
+ +
+
+ +
res.json()) .then(({ data }) => { data?.forEach((model) => { diff --git a/server/utils/EmbeddingEngines/lemonade/index.js b/server/utils/EmbeddingEngines/lemonade/index.js index 53743864..44c20c36 100644 --- a/server/utils/EmbeddingEngines/lemonade/index.js +++ b/server/utils/EmbeddingEngines/lemonade/index.js @@ -13,7 +13,7 @@ class LemonadeEmbedder { process.env.EMBEDDING_BASE_PATH, "openai" ), - apiKey: null, + apiKey: process.env.LEMONADE_LLM_API_KEY ?? null, }); this.model = process.env.EMBEDDING_MODEL_PREF; diff --git a/server/utils/agents/aibitat/providers/ai-provider.js b/server/utils/agents/aibitat/providers/ai-provider.js index 740d7ae1..4d234767 100644 --- a/server/utils/agents/aibitat/providers/ai-provider.js +++ b/server/utils/agents/aibitat/providers/ai-provider.js @@ -402,7 +402,7 @@ class Provider { configuration: { baseURL: process.env.LEMONADE_LLM_BASE_PATH, }, - apiKey: null, + apiKey: process.env.LEMONADE_LLM_API_KEY ?? null, ...config, }); default: diff --git a/server/utils/agents/aibitat/providers/lemonade.js b/server/utils/agents/aibitat/providers/lemonade.js index 57e74feb..0e6715d5 100644 --- a/server/utils/agents/aibitat/providers/lemonade.js +++ b/server/utils/agents/aibitat/providers/lemonade.js @@ -27,7 +27,7 @@ class LemonadeProvider extends InheritMultiple([Provider, UnTooled]) { process.env.LEMONADE_LLM_BASE_PATH, "openai" ), - apiKey: null, + apiKey: process.env.LEMONADE_LLM_API_KEY ?? null, maxRetries: 3, }); diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js index c7259e5c..e0154c8c 100644 --- a/server/utils/helpers/updateENV.js +++ b/server/utils/helpers/updateENV.js @@ -829,6 +829,10 @@ const KEY_MAPPING = { envKey: "LEMONADE_LLM_BASE_PATH", checks: [isValidURL], }, + LemonadeLLMApiKey: { + envKey: "LEMONADE_LLM_API_KEY", + checks: [], + }, LemonadeLLMModelPref: { envKey: "LEMONADE_LLM_MODEL_PREF", checks: [isNotEmpty],