import { useState, useEffect, useCallback, useMemo } from "react"; import { useAPI } from "../contexts/APIProvider"; import { LogPanel } from "./LogViewer"; import { processEvalTimes } from "../lib/Utils"; export default function ModelsPage() { const { models, unloadAllModels, loadModel, upstreamLogs, enableAPIEvents } = useAPI(); const [isUnloading, setIsUnloading] = useState(false); useEffect(() => { enableAPIEvents(true); return () => { enableAPIEvents(false); }; }, []); const handleUnloadAllModels = useCallback(async () => { setIsUnloading(true); try { await unloadAllModels(); } catch (e) { console.error(e); } finally { // at least give it a second to show the unloading message setTimeout(() => { setIsUnloading(false); }, 1000); } }, []); const [totalLines, totalTokens, avgTokensPerSecond] = useMemo(() => { return processEvalTimes(upstreamLogs); }, [upstreamLogs]); return (
{/* Left Column */}

Models

{models.map((model) => ( ))}
Name State
{model.name !== "" ? model.name : model.id} {model.description != "" && (

{model.description}

)}
{model.state}
{/* Right Column */}

Log Stats

note: eval logs from llama-server

Requests {totalLines}
Total Tokens Generated {totalTokens}
Average Tokens/Second {avgTokensPerSecond}
); }