feat: 搭建应用基础框架

包含应用入口、根组件、路由配置(含登录守卫)、主布局、全局样式、ECharts 插件、类型定义、常量映射表及静态资源。
This commit is contained in:
caoxiaozhu
2026-07-10 16:44:49 +08:00
parent 855308e5fa
commit 8aa67003c8
11 changed files with 1112 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
import type { DimensionType } from '@/types'
/** 各指标类型的评估方法选项 */
export const EVAL_METHODS: Record<
DimensionType | string,
{ value: string; name: string; desc: string }[]
> = {
classification: [
{ value: 'standard', name: '标准匹配', desc: '根据预设标准评估' },
{ value: 'sentiment', name: '情感分析', desc: '识别文本情感倾向' },
{ value: 'custom', name: '自定义评分器', desc: '自定义评估规则' },
],
metric: [
{ value: 'metric_standard', name: '综合评测', desc: '根据预设标准评分' },
{ value: 'semantic', name: '语义相似度', desc: '计算语义相似程度' },
{ value: 'custom', name: '自定义评分器', desc: '自定义评估规则' },
],
text_similarity: [
{ value: 'bleu_4', name: 'BLEU-4', desc: 'N-gram 精确度评估' },
{ value: 'cosine', name: 'Cosine', desc: '余弦相似度' },
{ value: 'rouge_1', name: 'ROUGE-1', desc: 'unigram 重叠评估' },
{ value: 'rouge_2', name: 'ROUGE-2', desc: 'bigram 重叠评估' },
{ value: 'rouge_4', name: 'ROUGE-4', desc: '4-gram 重叠评估' },
],
}
/** 各评估方法的预置 Prompt 模板 */
export const EVAL_METHOD_PROMPTS: Record<string, string> = {
standard: `# 角色
你是一位专业的对话评估专家,擅长根据提供的标准对助理在对话中的最终反应进行评估,并确定其是否[[Pass]]或[[Fail]]。
## 技能
### 技能 1: 对话回顾
- 通读整个对话以理解上下文和背景信息。
- 确保全面理解对话的意图和用户的需求。
### 技能 2: 最终回答识别
- 从对话中准确识别出助理给出的最后一个回答。
- 确保关注的是最终的回答,而不是中间的部分。
### 技能 3: 标准应用
- 仔细审查每个评价标准。
- 将助理的最终回答与标准的各个方面进行详细比较。
### 技能 4: 逐步推理
- 记录每个标准以及最终响应如何满足或不满足该标准。
- 提供详细的证据,并解释为什么最终答复满足或不满足期望。
### 技能 5: 结果判定
- 根据逐步推理的结果,判断最终回答是[[Pass]]或[[Fail]]
- 提供明确的结论并解释理由。
## 输出格式
以下列格式提供结果:
- **分步推理:**[详细推理在这里]
- **最终结果:**[[Pass]]或[[Fail]]
## 限制
- 只针对对话中的最终回答进行评估。
- 在评估过程中,确保遵循提供的标准,避免主观判断。`,
sentiment: `# 角色
你是一位专业的情感分析专家,擅长识别文本中的情感倾向,并给出[[Positive]]、[[Neutral]]或[[Negative]]的判断。
## 技能
### 技能 1: 文本理解
- 通读输入文本,理解其内容和语境。
### 技能 2: 情感识别
- 识别文本中表达的情感词汇、语气和情感强度。
- 分析上下文中的情感线索。
### 技能 3: 情感判定
- 根据识别到的情感信息,判断整体情感倾向。
## 输出格式
- **情感分析:**[分析过程]
- **最终结果:**[[Positive]]/[[Neutral]]/[[Negative]]`,
metric_standard: `# 角色
你是一位专业的模型评估专家擅长根据预设标准对模型输出进行综合评分0-5分
## 评估标准
请从以下维度对模型输出进行评分:
1. 准确性:回答是否准确无误
2. 完整性:是否完整覆盖了问题的各个方面
3. 连贯性:回答是否逻辑清晰、结构合理
4. 可读性:语言表达是否流畅、易懂
## 输出格式
- **评分理由:**[详细说明]
- **最终评分:**[0-5 的分数]`,
semantic: `# 角色
你是一位专业的语义相似度评估专家,擅长计算两段文本之间的语义相似程度。
## 任务
请评估生成文本与参考文本在语义上的相似程度,给出 0-1 之间的分数。
## 输出格式
- **相似度分析:**[分析过程]
- **相似度分数:**[0-1 的分数]`,
custom: `# 自定义评估器
请在此编写您的自定义评估 Prompt...`,
}

View File

@@ -0,0 +1,144 @@
/**
* 全局常量与映射表
*/
/** 模型类型 */
export const MODEL_TYPE_MAP: Record<string, string> = {
LLM: '大语言模型',
CV: '计算机视觉',
NLP: '自然语言处理',
Embedding: '向量模型',
Other: '其他',
}
/** 模型用途 */
export const PURPOSE_MAP: Record<string, { text: string; type: string }> = {
training: { text: '训练', type: 'primary' },
inference: { text: '推理', type: 'success' },
evaluation: { text: '评测', type: 'warning' },
}
/** 模型来源 */
export const MODEL_SOURCE_MAP: Record<string, string> = {
local: '本地模型',
api: '在线模型',
online: '在线模型',
}
/** 训练方式 */
export const TRAIN_TYPE_MAP: Record<string, string> = {
SFT: 'SFT',
DPO: 'DPO',
CPT: 'CPT',
}
/** 训练方法 */
export const TRAIN_METHOD_MAP: Record<string, string> = {
lora: 'LoRA',
qlora: 'QLoRA',
full: '全量微调',
prefix: 'Prefix Tuning',
adapter: 'Adapter',
peft: 'PEFT',
adalora: 'AdaLoRA',
longlora: 'LongLoRA',
dpo: 'DPO',
cpt: 'CPT',
}
/** 数据集类型 */
export const DATASET_TYPE_MAP: Record<string, string> = {
train: '训练数据',
test: '测试数据',
eval: '评测数据',
val: '验证数据',
other: '其他',
}
/** 存储位置 */
export const STORAGE_MAP: Record<string, string> = {
local: '本地存储',
minio: 'MinIO',
cloud: '云存储',
}
/** 评测维度指标类型 */
export const DIMENSION_TYPE_MAP: Record<string, string> = {
classification: '大模型-分类型',
metric: '大模型-指标型',
text_similarity: '规则-文本相似度',
}
/** 学习率调度器类型 */
export const LR_SCHEDULER_OPTIONS = [
{ label: 'cosine', value: 'cosine' },
{ label: 'linear', value: 'linear' },
{ label: 'constant', value: 'constant' },
]
/** 训练模板分组(按模型系列) */
export const TEMPLATE_GROUPS: { label: string; options: { label: string; value: string }[] }[] = [
{
label: 'Qwen 系列',
options: [
{ label: 'qwen', value: 'qwen' },
{ label: 'qwen2', value: 'qwen2' },
{ label: 'qwen2_5', value: 'qwen2_5' },
],
},
{
label: 'Llama 系列',
options: [
{ label: 'llama2', value: 'llama2' },
{ label: 'llama3', value: 'llama3' },
{ label: 'llama3_1', value: 'llama3_1' },
],
},
{
label: 'DeepSeek 系列',
options: [
{ label: 'deepseek', value: 'deepseek' },
{ label: 'deepseek2', value: 'deepseek2' },
],
},
{
label: '其他系列',
options: [
{ label: 'glm4', value: 'glm4' },
{ label: 'chatglm3', value: 'chatglm3' },
{ label: 'gemma', value: 'gemma' },
{ label: 'gemma2', value: 'gemma2' },
{ label: 'phi', value: 'phi' },
{ label: 'intern2', value: 'intern2' },
{ label: 'mistral', value: 'mistral' },
{ label: 'default', value: 'default' },
],
},
]
/** 默认工具列表(其他工具页) */
export const DEFAULT_TOOLS = [
{ id: 'data-generate', name: '数据生成', icon: 'fa-database', description: '基于LLM生成微调数据集' },
{ id: 'json2jsonl', name: 'JSON转JSONL', icon: 'fa-code', description: '将JSON文件转换为JSONL格式' },
{ id: 'md-convert', name: '转换Markdown', icon: 'fa-file-text', description: '将Markdown文件转换为训练数据' },
]
/** 自定义工具可选图标 */
export const TOOL_ICONS = [
'fa-cog', 'fa-database', 'fa-code', 'fa-file-text', 'fa-wrench', 'fa-cube',
'fa-line-chart', 'fa-bar-chart', 'fa-server', 'fa-cogs', 'fa-tasks', 'fa-trophy',
'fa-sliders', 'fa-rocket', 'fa-cloud', 'fa-cloud-download', 'fa-microchip',
'fa-hdd-o', 'fa-globe', 'fa-info-circle', 'fa-question-circle-o', 'fa-user-o',
'fa-lock-o', 'fa-sign-in', 'fa-sign-out', 'fa-search', 'fa-plus', 'fa-refresh',
'fa-times', 'fa-check', 'fa-pencil', 'fa-trash', 'fa-play', 'fa-arrow-left',
'fa-arrow-down', 'fa-arrow-up',
]
/** 会话超时5 分钟 */
export const SESSION_TIMEOUT = 5 * 60 * 1000
/** 系统监控刷新间隔 */
export const METRICS_INTERVAL = 30000
/** 训练进度刷新间隔 */
export const TRAINING_REFRESH_INTERVAL = 5000