feat: 搭建应用基础框架
包含应用入口、根组件、路由配置(含登录守卫)、主布局、全局样式、ECharts 插件、类型定义、常量映射表及静态资源。
This commit is contained in:
106
frontend/src/constants/dimension.ts
Normal file
106
frontend/src/constants/dimension.ts
Normal 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...`,
|
||||
}
|
||||
144
frontend/src/constants/index.ts
Normal file
144
frontend/src/constants/index.ts
Normal 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
|
||||
Reference in New Issue
Block a user