diff --git a/src/renderer/components/Experiment/Eval/EditEvalModal.tsx b/src/renderer/components/Experiment/Eval/EditEvalModal.tsx index 9e6e69c1dc86fea8c4e69cede62395172fed197c..c5ee3d2e7ec38772543213d07656880498583831 100644 --- a/src/renderer/components/Experiment/Eval/EditEvalModal.tsx +++ b/src/renderer/components/Experiment/Eval/EditEvalModal.tsx @@ -25,6 +25,7 @@ import TrainingModalDataTab from '../Train/TraningModalDataTab'; import AvailableFieldsImage from 'renderer/img/show-available-fields.png'; import { generateFriendlyName } from 'renderer/lib/utils'; +import exp from 'node:constants'; const fetcher = (url) => fetch(url).then((res) => res.json()); function PluginIntroduction({ experimentInfo, pluginId }) { @@ -97,6 +98,9 @@ export default function TrainingModalLoRA({ if (evalConfig) { setConfig(evalConfig.script_parameters); } + if (!nameInput && evalConfig?.script_parameters.run_name) { + setNameInput(evalConfig.script_parameters.run_name); + } } } catch (error) { console.error('Failed to parse evaluations JSON string:', error); @@ -105,6 +109,9 @@ export default function TrainingModalLoRA({ } }, [experimentInfo, currentEvalName, pluginId]); + console.log('Experiment Info:', experimentInfo); + console.log("Current Eval Name:", currentEvalName); + // Function to check if any key in the config contains the word "dataset" const hasDatasetKey = (config: any) => { return Object.keys(config).some(key => key.toLowerCase().includes('dataset')); @@ -164,6 +171,19 @@ export default function TrainingModalLoRA({ </Stack> ); } + const handleSubmit = async (event: FormEvent<HTMLFormElement>) => { + event.preventDefault(); + const formData = new FormData(event.currentTarget); + const formJson = Object.fromEntries((formData as any).entries()); + try { + const result = await chatAPI.EXPERIMENT_EDIT_EVALUATION(experimentInfo?.id, currentEvalName, formJson) + alert(JSON.stringify(formJson, null, 2)); + console.log('Edit Evaluation Result:', result); + onClose(); + } catch (error) { + console.error('Failed to edit evaluation:', error); + } + }; return ( <Modal open={open}> @@ -186,15 +206,20 @@ export default function TrainingModalLoRA({ height: '100%', justifyContent: 'space-between', }} - onSubmit={(event: FormEvent<HTMLFormElement>) => { - event.preventDefault(); - const formData = new FormData(event.currentTarget); - const formJson = Object.fromEntries((formData as any).entries()); + // onSubmit={(event: FormEvent<HTMLFormElement>) => { + // event.preventDefault(); + // const formData = new FormData(event.currentTarget); + // const formJson = Object.fromEntries((formData as any).entries()); - setNameInput(generateFriendlyName()); - alert(JSON.stringify(formJson, null, 2)); - onClose(); - }} + // setNameInput(generateFriendlyName()); + // // Set the run name in formJson as template name + // // formJson.run_name = formJson.template_name; + // // + // // alert(JSON.stringify(formJson, null, 2)); + // const result = await chatAPI.EXPERIMENT_EDIT_EVALUATION(experimentInfo?.id, currentEvalName, formJson) + // onClose(); + // }} + onSubmit={handleSubmit} > <Tabs aria-label="evaluation Template Tabs" diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts index dd16ede40a087873458f271f191c3d4324dbea28..35905eb43107ed84bc377862b799013b5d57fddf 100644 --- a/src/renderer/lib/transformerlab-api-sdk.ts +++ b/src/renderer/lib/transformerlab-api-sdk.ts @@ -1253,9 +1253,9 @@ Endpoints.Experiment = { DeleteConversation: (experimentId: string, conversationId: string) => FULL_PATH( 'experiment/' + - experimentId + - '/conversations/delete?conversation_id=' + - conversationId + experimentId + + '/conversations/delete?conversation_id=' + + conversationId ), InstallPlugin: (experimentId: string, pluginId: string) => API_URL() + @@ -1280,10 +1280,10 @@ Endpoints.Experiment = { ) => FULL_PATH( 'experiment/' + - experimentId + - '/plugins/list?type=' + - type + - (filter ? '&filter=' + filter : '') + experimentId + + '/plugins/list?type=' + + type + + (filter ? '&filter=' + filter : '') ), ScriptListFiles: (experimentId: string, id: string) => API_URL() + 'experiment/' + experimentId + '/plugins/' + id + '/list_files', @@ -1440,6 +1440,29 @@ export async function EXPERIMENT_ADD_EVALUATION( return result; } +export async function EXPERIMENT_EDIT_EVALUATION( + id: string, + evalName: string, + scriptParameters: any +) { + const newPlugin = { + evalName: evalName, + script_parameters: scriptParameters, + }; + + const response = await fetch(API_URL() + 'experiment/' + id + '/evals/edit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + accept: 'application/json', + }, + body: JSON.stringify(newPlugin), + }); + const result = await response.json(); + return result; +} + + export function CREATE_EXPERIMENT_URL(name: string) { return API_URL() + 'experiment/create?name=' + name; } @@ -1559,16 +1582,16 @@ export async function activateWorker( try { response = await fetch( API_URL() + - 'server/worker_start?model_name=' + - model + - '&adaptor=' + - adaptorName + - '&engine=' + - engine + - '&experiment_id=' + - experimentId + - '¶meters=' + - paramsJSON + 'server/worker_start?model_name=' + + model + + '&adaptor=' + + adaptorName + + '&engine=' + + engine + + '&experiment_id=' + + experimentId + + '¶meters=' + + paramsJSON ); const result = await response.json(); return result;