From 9ed2309757e7280e280785885a0a37e1598bec2d Mon Sep 17 00:00:00 2001 From: Sean Hatfield <seanhatfield5@gmail.com> Date: Mon, 13 May 2024 12:58:16 -0700 Subject: [PATCH] [FEAT] Add API key support for Oobabooga Web UI (#1354) * add api key support for oobabooga web ui * dont expose API Key for TextWebGenUi --------- Co-authored-by: timothycarambat <rambat1010@gmail.com> --- docker/.env.example | 1 + .../LLMSelection/TextGenWebUIOptions/index.jsx | 14 ++++++++++++++ server/.env.example | 1 + server/models/systemSettings.js | 1 + server/utils/AiProviders/textGenWebUI/index.js | 2 +- .../utils/agents/aibitat/providers/textgenwebui.js | 2 +- server/utils/helpers/updateENV.js | 4 ++++ 7 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docker/.env.example b/docker/.env.example index 5ea5ce609..3f99e52d4 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -74,6 +74,7 @@ GID='1000' # LLM_PROVIDER='textgenwebui' # TEXT_GEN_WEB_UI_BASE_PATH='http://127.0.0.1:5000/v1' # TEXT_GEN_WEB_UI_TOKEN_LIMIT=4096 +# TEXT_GEN_WEB_UI_API_KEY='sk-123abc' # LLM_PROVIDER='generic-openai' # GENERIC_OPEN_AI_BASE_PATH='http://proxy.url.openai.com/v1' diff --git a/frontend/src/components/LLMSelection/TextGenWebUIOptions/index.jsx b/frontend/src/components/LLMSelection/TextGenWebUIOptions/index.jsx index ec29222d2..50bb84154 100644 --- a/frontend/src/components/LLMSelection/TextGenWebUIOptions/index.jsx +++ b/frontend/src/components/LLMSelection/TextGenWebUIOptions/index.jsx @@ -32,6 +32,20 @@ export default function TextGenWebUIOptions({ settings }) { autoComplete="off" /> </div> + <div className="flex flex-col w-60"> + <label className="text-white text-sm font-semibold block mb-4"> + API Key (Optional) + </label> + <input + type="password" + name="TextGenWebUIAPIKey" + className="bg-zinc-900 text-white placeholder:text-white/20 text-sm rounded-lg focus:border-white block w-full p-2.5" + placeholder="TextGen Web UI API Key" + defaultValue={settings?.TextGenWebUIAPIKey ? "*".repeat(20) : ""} + autoComplete="off" + spellCheck={false} + /> + </div> </div> ); } diff --git a/server/.env.example b/server/.env.example index 008d90d2f..8f424d82a 100644 --- a/server/.env.example +++ b/server/.env.example @@ -71,6 +71,7 @@ JWT_SECRET="my-random-string-for-seeding" # Please generate random string at lea # LLM_PROVIDER='textgenwebui' # TEXT_GEN_WEB_UI_BASE_PATH='http://127.0.0.1:5000/v1' # TEXT_GEN_WEB_UI_TOKEN_LIMIT=4096 +# TEXT_GEN_WEB_UI_API_KEY='sk-123abc' # LLM_PROVIDER='generic-openai' # GENERIC_OPEN_AI_BASE_PATH='http://proxy.url.openai.com/v1' diff --git a/server/models/systemSettings.js b/server/models/systemSettings.js index 21d7af217..3c23a7d39 100644 --- a/server/models/systemSettings.js +++ b/server/models/systemSettings.js @@ -367,6 +367,7 @@ const SystemSettings = { // Text Generation Web UI Keys TextGenWebUIBasePath: process.env.TEXT_GEN_WEB_UI_BASE_PATH, TextGenWebUITokenLimit: process.env.TEXT_GEN_WEB_UI_MODEL_TOKEN_LIMIT, + TextGenWebUIAPIKey: !!process.env.TEXT_GEN_WEB_UI_API_KEY, // Generic OpenAI Keys GenericOpenAiBasePath: process.env.GENERIC_OPEN_AI_BASE_PATH, diff --git a/server/utils/AiProviders/textGenWebUI/index.js b/server/utils/AiProviders/textGenWebUI/index.js index ae0282a30..dfce76a5a 100644 --- a/server/utils/AiProviders/textGenWebUI/index.js +++ b/server/utils/AiProviders/textGenWebUI/index.js @@ -14,7 +14,7 @@ class TextGenWebUILLM { this.basePath = process.env.TEXT_GEN_WEB_UI_BASE_PATH; this.openai = new OpenAIApi({ baseURL: this.basePath, - apiKey: null, + apiKey: process.env.TEXT_GEN_WEB_UI_API_KEY ?? null, }); this.model = null; this.limits = { diff --git a/server/utils/agents/aibitat/providers/textgenwebui.js b/server/utils/agents/aibitat/providers/textgenwebui.js index 767577d42..d1e424255 100644 --- a/server/utils/agents/aibitat/providers/textgenwebui.js +++ b/server/utils/agents/aibitat/providers/textgenwebui.js @@ -13,7 +13,7 @@ class TextWebGenUiProvider extends InheritMultiple([Provider, UnTooled]) { super(); const client = new OpenAI({ baseURL: process.env.TEXT_GEN_WEB_UI_BASE_PATH, - apiKey: null, + apiKey: process.env.TEXT_GEN_WEB_UI_API_KEY ?? null, maxRetries: 3, }); diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js index e2f5c7526..947fbc624 100644 --- a/server/utils/helpers/updateENV.js +++ b/server/utils/helpers/updateENV.js @@ -155,6 +155,10 @@ const KEY_MAPPING = { envKey: "TEXT_GEN_WEB_UI_MODEL_TOKEN_LIMIT", checks: [nonZero], }, + TextGenWebUIAPIKey: { + envKey: "TEXT_GEN_WEB_UI_API_KEY", + checks: [], + }, // Generic OpenAI InferenceSettings GenericOpenAiBasePath: { -- GitLab