From 0cb7c53dd15cda9db276eccfc2f91ec12dc78955 Mon Sep 17 00:00:00 2001
From: sanjaycal <sanjay.calgary@gmail.com>
Date: Wed, 26 Feb 2025 12:21:09 -0500
Subject: [PATCH] add eval templates

---
 .../Experiment/Workflows/NewNodeModal.tsx     | 38 +++++++++++++++----
 .../components/Experiment/Workflows/index.tsx |  1 +
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/renderer/components/Experiment/Workflows/NewNodeModal.tsx b/src/renderer/components/Experiment/Workflows/NewNodeModal.tsx
index f3ed2fa8..41402c52 100644
--- a/src/renderer/components/Experiment/Workflows/NewNodeModal.tsx
+++ b/src/renderer/components/Experiment/Workflows/NewNodeModal.tsx
@@ -22,7 +22,12 @@ import { node } from 'webpack';
 
 const fetcher = (url: any) => fetch(url).then((res) => res.json());
 
-export default function NewNodeModal({ open, onClose, selectedWorkflow }) {
+export default function NewNodeModal({
+  open,
+  onClose,
+  selectedWorkflow,
+  experimentInfo,
+}) {
   const [mode, setMode] = useState('OTHER');
 
   console.log(mode);
@@ -33,13 +38,7 @@ export default function NewNodeModal({ open, onClose, selectedWorkflow }) {
     isLoading: isLoading,
   } = useSWR(chatAPI.GET_TRAINING_TEMPLATE_URL(), fetcher);
 
-  const {
-    data: workflowsData,
-    error: workflowsError,
-    isLoading: workflowsIsLoading,
-  } = useSWR(chatAPI.Endpoints.Workflows.List(), fetcher);
-
-  console.log(trainingTemplatesData);
+  const evaluationData = JSON.parse(experimentInfo?.config?.evaluations);
 
   const handleModeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
     setMode(event.target.outerText);
@@ -72,6 +71,22 @@ export default function NewNodeModal({ open, onClose, selectedWorkflow }) {
                   JSON.stringify(node)
                 )
               );
+            } else if (mode == 'EVAL') {
+              const template = formData.get('evalTemplate') as string;
+              const config = JSON.parse(selectedWorkflow.config);
+              console.log(config);
+              const node = {
+                name: name,
+                type: 'EVAL',
+                out: (config.nodes.length + 1).toString(),
+                template: template,
+              };
+              await fetch(
+                chatAPI.Endpoints.Workflows.AddNode(
+                  selectedWorkflow.id,
+                  JSON.stringify(node)
+                )
+              );
             } else {
               const node = JSON.parse(formData.get('node') as string);
               node.name = name;
@@ -94,6 +109,7 @@ export default function NewNodeModal({ open, onClose, selectedWorkflow }) {
             >
               <Option value="OTHER">OTHER</Option>
               <Option value="TRAIN">TRAIN</Option>
+              <Option value="EVAL">EVAL</Option>
             </Select>
             <FormLabel>Name</FormLabel>
             <Textarea minRows={4} autoFocus required name="name" />
@@ -103,6 +119,12 @@ export default function NewNodeModal({ open, onClose, selectedWorkflow }) {
                   <Option value={template[1]}>{template[1]}</Option>
                 ))}
               </Select>
+            ) : mode == 'EVAL' ? (
+              <Select name="evalTemplate">
+                {evaluationData.map((template) => (
+                  <Option value={template.name}>{template.name}</Option>
+                ))}
+              </Select>
             ) : (
               <FormControl>
                 <FormLabel>Nodes</FormLabel>
diff --git a/src/renderer/components/Experiment/Workflows/index.tsx b/src/renderer/components/Experiment/Workflows/index.tsx
index edd9567f..9ecacfd2 100644
--- a/src/renderer/components/Experiment/Workflows/index.tsx
+++ b/src/renderer/components/Experiment/Workflows/index.tsx
@@ -75,6 +75,7 @@ export default function Workflows({ experimentInfo }) {
             mutateWorkflows();
           }}
           selectedWorkflow={selectedWorkflow}
+          experimentInfo={experimentInfo}
         />
       )}
       <Typography level="h1">Workflows</Typography>
-- 
GitLab