diff --git a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx index 4bb30d6f37b3cd718abb462bb37cc59db844f3ab..8a1e6a19bc539143d1cfe55495b6f1ca2c51e354 100644 --- a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx +++ b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx @@ -74,6 +74,7 @@ const EvalJobsTable = () => { const [viewOutputFromJob, setViewOutputFromJob] = useState(-1); const [openCSVModal, setOpenCSVModal] = useState(false); const [currentJobId, setCurrentJobId] = useState(''); + const [fileNameForDetailedReport, setFileNameForDetailedReport] = useState(''); const fetchCSV = async (jobId) => { const response = await fetch( @@ -112,6 +113,8 @@ const EvalJobsTable = () => { <ViewOutputModalStreaming jobId={viewOutputFromJob} setJobId={setViewOutputFromJob} + setFileName={setFileNameForDetailedReport} + fileName={fileNameForDetailedReport} /> <Typography level="h3">Executions</Typography> <Sheet sx={{ overflowY: 'scroll' }}> @@ -151,6 +154,7 @@ const EvalJobsTable = () => { <td> <RenderScore score={job?.job_data?.score} /> {job?.job_data?.additional_output_path && ( + job.job_data.additional_output_path.toLowerCase().endsWith('.csv') ? ( <Link onClick={() => handleOpenCSVModal(job?.id)} sx={{ mt: 1, ml: 1 }} @@ -158,7 +162,19 @@ const EvalJobsTable = () => { > Detailed Report </Link> - )} + ) : ( + <Link + onClick={() => { + setFileNameForDetailedReport(job?.job_data?.additional_output_path); + setViewOutputFromJob(job?.id); + }} + sx={{ mt: 1, ml: 1 }} + startDecorator={<Grid3X3Icon size="14px" />} + > + Detailed Report + </Link> + ) + )} </td> <td> <ButtonGroup diff --git a/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx b/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx index 6eed6f0d24c140138bf436cb416046847419e42a..bef6538674e00addb1e435c08758289549a9713e 100644 --- a/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx +++ b/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx @@ -7,12 +7,26 @@ import OutputTerminal from 'renderer/components/OutputTerminal'; const fetcher = (url) => fetch(url).then((res) => res.json()); -export default function ViewOutputModalStreaming({ jobId, setJobId }) { +interface ViewOutputModalStreamingProps { + jobId: number; + setJobId: (id: number) => void; + fileName?: string | null; + setFileName: (value: string) => void; +} + +export default function ViewOutputModalStreaming({ jobId, setJobId, fileName, setFileName}: ViewOutputModalStreamingProps) { + const logEndpoint = fileName !== '' + ? chatAPI.Endpoints.Experiment.StreamDetailedJSONReportFromJob(jobId, fileName) + : chatAPI.Endpoints.Experiment.StreamOutputFromJob(jobId); + const title_sentence = fileName !== '' ? 'Detailed Report for Job' : 'Output from Job'; + return ( - <Modal open={jobId != -1} onClose={() => setJobId(-1)}> + <Modal open={jobId != -1} onClose={() => {setJobId(-1); + setFileName(''); + }}> <ModalDialog sx={{ width: '80vw', height: '80vh' }}> <ModalClose /> - <Typography level="title-lg">Output from job: {jobId}</Typography> + <Typography level="title-lg"> {title_sentence} {jobId}</Typography> <Box sx={{ height: '100%', @@ -24,9 +38,7 @@ export default function ViewOutputModalStreaming({ jobId, setJobId }) { }} > <OutputTerminal - logEndpoint={chatAPI.Endpoints.Experiment.StreamOutputFromJob( - jobId - )} + logEndpoint={logEndpoint} lineAnimationDelay={5} /> </Box> diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts index d208cfbb99fa8d98b0080deb1163ed6d3dabf680..b12d8acd575f04703e484808dc99c1eb88788554 100644 --- a/src/renderer/lib/transformerlab-api-sdk.ts +++ b/src/renderer/lib/transformerlab-api-sdk.ts @@ -1382,6 +1382,8 @@ Endpoints.Experiment = { API_URL() + `train/job/${jobId}/stream_output`, StreamOutputFromJob: (jobId: string) => API_URL() + `jobs/${jobId}/stream_output`, + StreamDetailedJSONReportFromJob: (jobId: string, fileName: string) => + API_URL() + `jobs/${jobId}/stream_detailed_json_report?file_name=${fileName}`, StreamAdditionalDetails : (jobId: string) => API_URL() + `jobs/${jobId}/get_additional_details`, GetGeneratedDataset : (jobId: string) =>