| | |
| | | |
| | | const runtimeSummary = useMemo(() => { |
| | | return { |
| | | requestId: runtime?.requestId || "--", |
| | | promptName: runtime?.promptName || "--", |
| | | model: runtime?.model || "--", |
| | | mountedMcpCount: runtime?.mountedMcpCount ?? 0, |
| | |
| | | } |
| | | if (eventName === "error") { |
| | | const message = payload?.message || "AI 对话失败"; |
| | | setDrawerError(message); |
| | | notify(message, { type: "error" }); |
| | | const displayMessage = payload?.requestId ? `${message} [${payload.requestId}]` : message; |
| | | setDrawerError(displayMessage); |
| | | notify(displayMessage, { type: "error" }); |
| | | } |
| | | }, |
| | | } |
| | |
| | | <Box flex={1} display="flex" flexDirection="column" minHeight={0}> |
| | | <Box px={2} py={1.5}> |
| | | <Stack direction="row" spacing={1} flexWrap="wrap" useFlexGap> |
| | | <Chip size="small" label={`Req: ${runtimeSummary.requestId}`} /> |
| | | <Chip size="small" label={`Session: ${sessionId || "--"}`} /> |
| | | <Chip size="small" label={`Prompt: ${runtimeSummary.promptName}`} /> |
| | | <Chip size="small" label={`Model: ${runtimeSummary.model}`} /> |
| | |
| | | <Divider /> |
| | | |
| | | <Box px={2} py={1.5}> |
| | | {usage?.elapsedMs != null && ( |
| | | <Typography variant="caption" color="text.secondary" display="block" mb={0.5}> |
| | | Elapsed: {usage.elapsedMs} ms{usage?.firstTokenLatencyMs != null ? ` / First token: ${usage.firstTokenLatencyMs} ms` : ""} |
| | | </Typography> |
| | | )} |
| | | {usage?.totalTokens != null && ( |
| | | <Typography variant="caption" color="text.secondary" display="block" mb={1}> |
| | | Tokens: prompt {usage?.promptTokens ?? 0} / completion {usage?.completionTokens ?? 0} / total {usage?.totalTokens ?? 0} |