Files

174 lines
7.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>大模型速度测试助手</title>
<link rel="stylesheet" href="css/style.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
</head>
<body>
<div class="app-container">
<!-- 左侧控制面板 -->
<aside class="sidebar">
<div class="sidebar-header">
<h1>大模型速度测试助手</h1>
<div class="version" id="versionLabel">v2.1</div>
</div>
<!-- 测试用例选择 -->
<div class="panel">
<div class="panel-title">测试用例选择</div>
<div class="quick-actions">
<button onclick="selectRecommended()">推荐组合</button>
<button onclick="selectAll()">全选</button>
<button onclick="clearAll()">清空</button>
</div>
<div id="testCaseList">
<!-- 从 /api/cases 动态加载 -->
</div>
</div>
<!-- 参数配置 -->
<div class="panel">
<div class="panel-title">参数配置</div>
<div class="config-group">
<label>模型</label>
<select id="modelSelect">
<option value="">加载中...</option>
</select>
</div>
<div class="config-group">
<label>重复次数</label>
<input type="number" id="repeatsInput" value="3" min="1" max="20">
</div>
<div class="config-group">
<label>运行模式</label>
<select id="runMode">
<option value="all">全部用例</option>
<option value="skip_heavy">跳过耗时用例</option>
</select>
</div>
</div>
<!-- 操作按钮 -->
<div class="panel">
<button class="btn btn-primary" id="startBtn" onclick="startTests()" disabled>
开始测试
</button>
<button class="btn btn-secondary" id="stopBtn" onclick="stopTests()" disabled>
停止测试
</button>
<button class="btn btn-secondary" id="loadHistoryBtn" onclick="loadHistory()">
加载历史对比
</button>
</div>
</aside>
<!-- 右侧主内容区 -->
<main class="main-content">
<!-- 运行状态面板 -->
<div class="status-panel" id="statusPanel">
<div class="status-header">
<div class="status-text running" id="statusText">准备中...</div>
<div id="progressPercent">0%</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar" id="progressBar"></div>
</div>
<div id="currentCaseInfo" style="font-size:13px;margin-bottom:10px;color:#64748b;"></div>
<ul class="step-list" id="stepList"></ul>
</div>
<!-- 结果展示区 -->
<div class="results-area" id="resultsArea">
<!-- 推理指标概览 -->
<div class="report-card" id="inferenceCard" style="display:none;">
<h2>推理核心指标</h2>
<div class="metric-grid" id="inferenceMetricsGrid"></div>
<div class="metric-description">
<p><strong>TTFT(首 Token 延迟)</strong>:从请求到生成第一个 token 的时间,影响用户感知响应速度</p>
<p><strong>Prefill Time(预填充时间)</strong>:处理 prompt 的时间,与上下文长度正相关</p>
<p><strong>Decode Speed(解码速度)</strong>:tokens/s,衡量模型生成效率</p>
</div>
</div>
<!-- 并发压力摘要 -->
<div class="report-card" id="concurrencyCard" style="display:none;">
<h2>⚡ 并发压力测试摘要</h2>
<div class="metric-grid" id="concurrencyMetricsGrid"></div>
</div>
<!-- 概览卡片 -->
<div class="report-card" id="overviewCard" style="display:none;">
<h2>测试概览</h2>
<div class="metric-grid" id="metricGrid"></div>
</div>
<!-- 图表区 -->
<div class="report-card" id="chartCard" style="display:none;">
<h2>性能对比图表</h2>
<div class="chart-wrapper">
<canvas id="barChart"></canvas>
</div>
<div class="chart-wrapper">
<canvas id="p95Chart"></canvas>
</div>
</div>
<!-- 数据表 -->
<div class="report-card" id="tableCard" style="display:none;">
<h2>详细数据</h2>
<div style="overflow-x:auto;">
<table class="data-table" id="dataTable">
<thead>
<tr>
<th>用例名称</th>
<th>难度</th>
<th>状态</th>
<th>平均延迟 (ms)</th>
<th>标准差</th>
<th>最小</th>
<th>最大</th>
<th>P95</th>
</tr>
</thead>
<tbody id="dataTableBody"></tbody>
</table>
</div>
</div>
<!-- 操作按钮 -->
<div class="action-buttons" id="actionButtons" style="display:none;">
<button onclick="openReport()">打开完整报告</button>
<button onclick="exportCSV()">导出 CSV</button>
<button onclick="exportJSON()">导出 JSON</button>
<button class="primary" onclick="runNewTest()">新测试</button>
</div>
</div>
<!-- 初始欢迎状态 -->
<div class="report-card" id="welcomeCard">
<h2>欢迎使用大模型速度测试助手</h2>
<p style="color:#64748b;margin:15px 0;">
本工具用于测试大模型在不同场景下的响应速度
<span id="welcomeBackend">(Ollama 本地 / OpenAI 兼容服务)</span>。
<br>请在左侧面板选择测试用例和模型,然后点击"开始测试"。
</p>
<div style="margin-top:20px;">
<h3 style="font-size:14px;margin-bottom:10px;">快速开始:</h3>
<ol style="padding-left:20px;color:#64748b;font-size:13px;line-height:2;">
<li>左侧选择测试用例("推荐组合"快速勾选)</li>
<li>选择模型和重复次数</li>
<li>点击"开始测试",观察实时进度</li>
<li>完成后导出 CSV / JSON 或打开完整报告</li>
</ol>
</div>
</div>
</main>
</div>
<script src="js/app.js"></script>
</body>
</html>