import { useEffect, useState } from 'react' import { getToken } from '../../api/client' export default function LLMCallsPage() { const [calls, setCalls] = useState([]) const [stats, setStats] = useState({}) useEffect(() => { fetchLLM() const interval = setInterval(fetchLLM, 5000) return () => clearInterval(interval) }, []) const fetchLLM = async () => { try { const token = getToken() const res = await fetch('/api/v1/admin/llm-calls', { headers: { Authorization: `Bearer ${token}` } }) const data = await res.json() setCalls(data.calls || []) setStats(data.stats || {}) } catch {} } return (

LLM 调用日志

{/* Stats */}
{/* Calls table */}
{calls.length === 0 ? (
暂无 LLM 调用记录
) : ( {calls.map((c, i) => ( ))}
时间 模型 用途 耗时 Token 状态
{c.time?.slice(11,19) || '-'} {c.model || '-'} {c.purpose || '-'} {c.duration_ms}ms {(c.prompt_tokens||0)+(c.completion_tokens||0)} {c.success ? '✓' : '✗'}
)}
) } function MiniStat({ label, value }: { label:string; value:string|number }) { return (

{label}

{value}

) }