Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| import React, { useState, useEffect } from "react"; | |
| import { Box, CircularProgress } from "@mui/material"; | |
| import { useNavigate, useSearchParams, Navigate } from "react-router-dom"; | |
| import Intro from "../components/Intro"; | |
| import Display from "../components/Benchmark/Display"; | |
| import API_CONFIG from "../config/api"; | |
| import { useThemeMode } from "../hooks/useThemeMode"; | |
| import getTheme from "../config/theme"; | |
| function BenchmarkDisplayPage() { | |
| const navigate = useNavigate(); | |
| const [searchParams] = useSearchParams(); | |
| const sessionId = searchParams.get("session"); | |
| const [benchmarkQuestions, setBenchmarkQuestions] = useState([]); | |
| const [datasetUrl, setDatasetUrl] = useState(null); | |
| const [isValidSession, setIsValidSession] = useState(true); | |
| const [isLoading, setIsLoading] = useState(true); | |
| const { mode } = useThemeMode(); | |
| const theme = getTheme(mode); | |
| useEffect(() => { | |
| console.log("BenchmarkDisplayPage useEffect - sessionId:", sessionId); | |
| if (!sessionId) { | |
| console.log("Missing session ID, redirecting to home"); | |
| setIsValidSession(false); | |
| return; | |
| } | |
| setIsLoading(true); | |
| const fetchBenchmarkQuestions = async () => { | |
| console.log("Attempting to fetch questions for session:", sessionId); | |
| try { | |
| const apiUrl = `${API_CONFIG.BASE_URL}/benchmark-questions/${sessionId}`; | |
| console.log("API call:", apiUrl); | |
| const response = await fetch(apiUrl); | |
| console.log("API response received:", response.status); | |
| if (!response.ok) { | |
| if (response.status === 404) { | |
| console.error("Session not found"); | |
| setIsValidSession(false); | |
| return; | |
| } else { | |
| console.error(`Server error: ${response.status}`); | |
| setIsLoading(false); | |
| return; | |
| } | |
| } | |
| const data = await response.json(); | |
| console.log("API data:", data); | |
| if (data.success && data.questions && data.questions.length > 0) { | |
| console.log("Questions loaded successfully:", data.questions); | |
| setBenchmarkQuestions(data.questions); | |
| } else { | |
| console.warn("Failed to load questions, using default values"); | |
| } | |
| if (data.dataset_url) { | |
| setDatasetUrl(data.dataset_url); | |
| } else { | |
| const url = `https://huggingface.co/datasets/yourbench/yourbench_${sessionId}`; | |
| setDatasetUrl(url); | |
| console.log("Dataset URL generated:", url); | |
| } | |
| } catch (error) { | |
| console.error("Error retrieving questions:", error); | |
| setIsValidSession(false); | |
| } finally { | |
| setIsLoading(false); | |
| } | |
| }; | |
| fetchBenchmarkQuestions(); | |
| }, [sessionId]); | |
| const handleStartEvaluation = () => { | |
| console.log("Starting evaluation with session ID:", sessionId); | |
| const isDefault = [ | |
| "the-bitter-lesson", | |
| "hurricane-faq", | |
| "pokemon-guide", | |
| ].includes(sessionId); | |
| navigate( | |
| `/benchmark-evaluation?session=${sessionId}&isDefault=${ | |
| isDefault ? "true" : "false" | |
| }` | |
| ); | |
| }; | |
| const defaultSampleQuestions = [ | |
| { | |
| id: 1, | |
| question: "What are the key features discussed in the document?", | |
| answer: | |
| "The document discusses features such as scalability, integration capabilities, and security measures that are important for enterprise solutions.", | |
| type: "single_shot", | |
| }, | |
| { | |
| id: 2, | |
| question: | |
| "How does the proposed solution address the challenges mentioned in section 2 in relation to the overall market trends?", | |
| answer: | |
| "The proposed solution addresses the challenges by incorporating AI-driven analytics that adapt to changing market conditions while maintaining compliance with industry regulations, thus providing a competitive edge in the evolving marketplace.", | |
| type: "multi_hop", | |
| }, | |
| ]; | |
| if (!isValidSession) { | |
| return <Navigate to="/" />; | |
| } | |
| return ( | |
| <> | |
| <Intro /> | |
| {isLoading ? ( | |
| <Box | |
| sx={{ | |
| display: "flex", | |
| justifyContent: "center", | |
| alignItems: "center", | |
| mt: 8, | |
| mb: 8, | |
| }} | |
| > | |
| <CircularProgress size={60} /> | |
| </Box> | |
| ) : ( | |
| <Box | |
| sx={{ | |
| border: `1px solid ${theme.palette.divider}`, | |
| borderRadius: 2, | |
| p: 4, | |
| bgcolor: "background.paper", | |
| }} | |
| > | |
| <Display | |
| onStartEvaluation={handleStartEvaluation} | |
| sessionId={sessionId} | |
| datasetUrl={datasetUrl} | |
| sampleQuestions={ | |
| benchmarkQuestions.length > 0 | |
| ? benchmarkQuestions | |
| : defaultSampleQuestions | |
| } | |
| /> | |
| </Box> | |
| )} | |
| </> | |
| ); | |
| } | |
| export default BenchmarkDisplayPage; | |