From 5fd38faa64f785f726ae171b5f205f3c27eb05b3 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 4 Jun 2024 18:06:26 -0700 Subject: [PATCH] ui - edit callbacks and test on ui --- .../src/components/settings.tsx | 235 ++++++++---------- 1 file changed, 105 insertions(+), 130 deletions(-) diff --git a/ui/litellm-dashboard/src/components/settings.tsx b/ui/litellm-dashboard/src/components/settings.tsx index 42c969359c6..900349555c3 100644 --- a/ui/litellm-dashboard/src/components/settings.tsx +++ b/ui/litellm-dashboard/src/components/settings.tsx @@ -24,8 +24,13 @@ import { Tab, Callout, SelectItem, + Icon, } from "@tremor/react"; +import { + PencilAltIcon +} from "@heroicons/react/outline"; + import { Modal, Typography, Form, Input, Select, Button as Button2, message } from "antd"; const { Title, Paragraph } = Typography; @@ -124,6 +129,9 @@ const Settings: React.FC = ({ const [selectedCallbacktoAdd, setSelectedCallbacktoAdd] = useState(null); const [selectedCallbackParams, setSelectedCallbackParams] = useState([]); + const [showEditCallback, setShowEditCallback] = useState(false); + const [selectedEditCallback, setSelectedEditCallback] = useState(null); + const handleSwitchChange = (alertName: string) => { if (activeAlerts.includes(alertName)) { setActiveAlerts(activeAlerts.filter((alert) => alert !== alertName)); @@ -148,23 +156,8 @@ const Settings: React.FC = ({ } getCallbacksCall(accessToken, userID, userRole).then((data) => { console.log("callbacks", data); - let updatedCallbacks: any[] = []; - updatedCallbacks = updatedCallbacks.map((item: any) => { - const callback = data.callbacks.find( - (cb: any) => cb.name === item.name - ); - if (callback) { - return { - ...item, - variables: { ...item.variables, ...callback.variables }, - }; - } else { - return item; - } - }); - - setCallbacks(updatedCallbacks); + setCallbacks(data.callbacks); setAllCallbacks(data.available_callbacks); // setCallbacks(callbacks_data); @@ -246,6 +239,36 @@ const Settings: React.FC = ({ message.success("Email settings updated successfully"); } + const updateCallbackCall = async (formValues: Record) => { + if (!accessToken) { + return; + } + + let env_vars: Record = {}; + // add all other variables + Object.entries(formValues).forEach(([key, value]) => { + if (key !== "callback") { + env_vars[key] = value + } + }); + let payload = { + environment_variables: env_vars, + } + + + try { + let newCallback = await setCallbacksCall(accessToken, payload); + message.success(`Callback added successfully`); + setIsModalVisible(false); + form.resetFields(); + setSelectedCallback(null); + } catch (error) { + message.error("Failed to add callback: " + error, 20); + } + } + + + const addNewCallbackCall = async (formValues: Record) => { if (!accessToken) { @@ -288,7 +311,7 @@ const Settings: React.FC = ({ setSelectedCallback(callbackObject.litellm_callback_name); console.log("all callbacks", allCallbacks); - if (selectedCallback) { + if (callbackObject && callbackObject.litellm_callback_params) { setSelectedCallbackParams(callbackObject.litellm_callback_params); console.log("selectedCallbackParams", selectedCallbackParams); } else { @@ -480,72 +503,60 @@ const Settings: React.FC = ({ Active Logging Callbacks - + + + + + - Callback - Callback Env Vars + Callback Name + {/* Callback Env Vars */} + {callbacks - .filter((callback) => callback.name !== "slack") .map((callback, index) => ( - + + - {callback.name} + {callback.name} -
    - {Object.entries(callback.variables ?? {}) - .filter(([key, value]) => - key.toLowerCase().includes(callback.name) - ) - .map(([key, value]) => ( -
  • - {key} - {key === "LANGFUSE_HOST" ? ( -

    - default value=https://cloud.langfuse.com -

    - ) : ( -
    - )} - -
  • - ))} -
- - + + { + setSelectedEditCallback(callback); + setShowEditCallback(true); + }} + /> + +
))}
+
- @@ -777,72 +788,7 @@ const Settings: React.FC = ({ - -
- - - - - {selectedCallback === "langfuse" && ( - <> - - - - - - - - - )} - - {selectedCallback == "openmeter" && ( - <> - - - - - )} - -
- Save -
-
-
+ = ({ + + setShowEditCallback(false)} + footer={null} + > +
+ <> + { + selectedEditCallback && selectedEditCallback.variables && Object.entries(selectedEditCallback.variables).map(([param, value]) => ( + + + + )) + } + +
+ Save +
- - - +
+