From 96979e08d6ef45c4e653d88e7e142fe75c5cab68 Mon Sep 17 00:00:00 2001
From: deep1401 <gandhi0869@gmail.com>
Date: Fri, 21 Feb 2025 13:40:12 -0800
Subject: [PATCH] Add Wandb API Key in settings

---
 .../components/TransformerLabSettings.tsx     | 26 +++++++++++++++++++
 src/renderer/lib/transformerlab-api-sdk.ts    |  2 ++
 2 files changed, 28 insertions(+)

diff --git a/src/renderer/components/TransformerLabSettings.tsx b/src/renderer/components/TransformerLabSettings.tsx
index 054da534..af116b03 100644
--- a/src/renderer/components/TransformerLabSettings.tsx
+++ b/src/renderer/components/TransformerLabSettings.tsx
@@ -52,6 +52,13 @@ export default function TransformerLabSettings({ }) {
     mutate: canLogInToHuggingFaceMutate,
   } = useSWR(chatAPI.Endpoints.Models.HuggingFaceLogin(), fetcher);
 
+  const {
+    data: wandbLoginStatus,
+    error: wandbLoginStatusError,
+    isLoading: wandbLoginStatusIsLoading,
+    mutate: wandbLoginMutate,
+  } = useSWR(chatAPI.Endpoints.Models.testWandbLogin(), fetcher);
+
   return (
     <>
       <Typography level="h1" marginBottom={3}>
@@ -130,6 +137,25 @@ export default function TransformerLabSettings({ }) {
             </FormControl>
           </>
         )}{' '}
+          {wandbLoginStatus?.message === 'OK' ? (
+          <Alert color="success">Login to Weights &amp; Biases Successful</Alert>
+        ) : (
+          <FormControl sx={{ maxWidth: '500px', mt: 2 }}>
+            <FormLabel>Weights &amp; Biases API Key</FormLabel>
+            <Input name="wandbToken" type="password" />
+            <Button
+              onClick={async () => {
+                const token = document.getElementsByName('wandbToken')[0].value;
+                await fetch(chatAPI.Endpoints.Config.Set('WANDB_API_KEY', token));
+                await fetch(chatAPI.Endpoints.Models.wandbLogin());
+                wandbLoginMutate();
+              }}
+              sx={{ marginTop: 1, width: '100px', alignSelf: 'flex-end' }}
+            >
+              Save
+            </Button>
+          </FormControl>
+        )}
         <FormControl sx={{ maxWidth: '500px', mt: 2 }}>
           <FormLabel>OpenAI API Key</FormLabel>
           <Input name="openaiKey" type="password" />
diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts
index cbf52369..6ec0a82b 100644
--- a/src/renderer/lib/transformerlab-api-sdk.ts
+++ b/src/renderer/lib/transformerlab-api-sdk.ts
@@ -1093,6 +1093,8 @@ Endpoints.Models = {
     API_URL() + 'model/import_from_local_path?model_path=' + modelPath,
   HuggingFaceLogin: () => API_URL() + 'model/login_to_huggingface',
   Delete: (modelId: string) => API_URL() + 'model/delete?model_id=' + modelId,
+  wandbLogin: () => API_URL() + 'model/login_to_wandb',
+  testWandbLogin: () => API_URL() + 'model/test_wandb_login',
   SetOpenAIKey: () => API_URL() + 'model/set_openai_api_key',
   SetAnthropicKey: () => API_URL() + 'model/set_anthropic_api_key',
   CheckOpenAIAPIKey: () => API_URL() + 'model/check_openai_api_key',
-- 
GitLab