From 77b3d6bedb97ae223e2c5876be16daa67adf67fa Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Tue, 25 Jul 2023 16:49:04 +0200 Subject: [PATCH] add brain settings tab --- backend/core/routes/brain_routes.py | 6 +- .../BrainManagementTabs.tsx | 6 +- .../components/SettingsTab/SettingsTab.tsx | 121 ++++++++++++++ .../SettingsTab/hooks/useSettingsTab.ts | 154 ++++++++++++++++++ .../api/brain/__tests__/useBrainApi.test.ts | 7 +- frontend/lib/api/brain/brain.ts | 7 +- frontend/lib/api/brain/types.ts | 4 +- frontend/lib/api/brain/useBrainApi.ts | 7 +- .../BrainProvider/hooks/useBrainProvider.ts | 4 +- frontend/lib/context/BrainProvider/types.ts | 9 +- 10 files changed, 305 insertions(+), 20 deletions(-) create mode 100644 frontend/app/brains-management/[brainId]/components/BrainManagementTabs/components/SettingsTab/SettingsTab.tsx create mode 100644 frontend/app/brains-management/[brainId]/components/BrainManagementTabs/components/SettingsTab/hooks/useSettingsTab.ts diff --git a/backend/core/routes/brain_routes.py b/backend/core/routes/brain_routes.py index 0588a2ce2..de17b69c0 100644 --- a/backend/core/routes/brain_routes.py +++ b/backend/core/routes/brain_routes.py @@ -10,6 +10,7 @@ from models.brains import ( ) from models.settings import BrainRateLimiting from models.users import User + from routes.authorizations.brain_authorization import RoleEnum, has_brain_authorization logger = get_logger(__name__) @@ -74,10 +75,7 @@ async def get_brain_endpoint( brain = Brain(id=brain_id) brains = brain.get_brain_details() if len(brains) > 0: - return { - "id": brain_id, - "name": brains[0]["name"], - } + return brains[0] else: return HTTPException( status_code=404, diff --git a/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/BrainManagementTabs.tsx b/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/BrainManagementTabs.tsx index 7ec26a520..1dc4675f2 100644 --- a/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/BrainManagementTabs.tsx +++ b/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/BrainManagementTabs.tsx @@ -1,6 +1,7 @@ import { Content, List, Root } from "@radix-ui/react-tabs"; import { BrainTabTrigger, PeopleTab } from "./components"; +import { SettingsTab } from "./components/SettingsTab/SettingsTab"; import { useBrainManagementTabs } from "./hooks/useBrainManagementTabs"; export const BrainManagementTabs = (): JSX.Element => { @@ -38,11 +39,14 @@ export const BrainManagementTabs = (): JSX.Element => {
-

coming soon

+
+ +

Coming soon

+
); diff --git a/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/components/SettingsTab/SettingsTab.tsx b/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/components/SettingsTab/SettingsTab.tsx new file mode 100644 index 000000000..8f0e00108 --- /dev/null +++ b/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/components/SettingsTab/SettingsTab.tsx @@ -0,0 +1,121 @@ +/* eslint-disable max-lines */ + +import { UUID } from "crypto"; + +import Button from "@/lib/components/ui/Button"; +import { Divider } from "@/lib/components/ui/Divider"; +import Field from "@/lib/components/ui/Field"; +import { TextArea } from "@/lib/components/ui/TextField"; +import { models, paidModels } from "@/lib/context/BrainConfigProvider/types"; +import { defineMaxTokens } from "@/lib/helpers/defineMexTokens"; + +import { ApiKeyConfig } from "./components"; +import { useSettingsTab } from "./hooks/useSettingsTab"; + +type SettingsTabProps = { + brainId: UUID; +}; + +export const SettingsTab = ({ brainId }: SettingsTabProps): JSX.Element => { + const { + handleSubmit, + register, + hasChanges, + openAiKey, + temperature, + maxTokens, + model, + setAsDefaultBrainHandler, + isSettingAsDefault, + isUpdating, + } = useSettingsTab({ brainId }); + + return ( +
void handleSubmit(e)} + className="my-10 mb-0 flex flex-col items-center gap-2" + > + +