1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"repo": "b1ueskye/robot-hong", "files": {"training/config.py": {"4c2d5d354184748252d3f59c1d69be31541f1f39": {"t": 1785746870.6185954, "n": 3513, "h": "15cde91981b4446a", "c": "\"\"\"\n训练配置\n\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n# 项目根目录\nTRAINING_ROOT = Path(__file__).parent\nDATA_DIR = TRAINING_ROOT / \"data\"\nOUTPUT_DIR = TRAINING_ROOT / \"output\"\n\n\n@dataclass\nclass DataConfig:\n \"\"\"数据配置\"\"\"\n # 蒸馏API配置\n api_base_url: str = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n api_model: str = \"deepseek-v3.2\" # 阿里云百炼的 DeepSeek\n api_key_env: str = \"sk-ad84676a8bf64a87924f2da0a98942e8\"\n \n # 数据路径\n scenarios_file: str = str(DATA_DIR / \"scenarios.json\")\n raw_data_dir: str = str(DATA_DIR / \"raw\")\n processed_data_dir: str = str(DATA_DIR / \"processed\")\n \n # 数据生成参数\n num_samples: int = 20000 # 目标数据量\n samples_per_file: int = 500 # 每个文件保存的样本数\n max_retries: int = 3 # API调用失败重试次数\n temperature: float = 0.9 # 生成温度(高一点增加多样性)\n max_tokens: int = 1500 # 单次生成最大token\n \n # 并发配置\n concurrent_requests: int = 10 # 并发请求数\n request_delay: float = 0.2 # 请求间隔(秒)\n \n @property\n def api_key(self) -> str:\n return self.api_key_env\n\n\n@dataclass\nclass ModelConfig:\n \"\"\"模型配置\"\"\"\n # 基座模型\n base_model_name: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n base_model_local: str = str(OUTPUT_DIR / \"base_model\")\n \n # 下载源\n download_source: str = \"modelscope\" # modelscope 或 huggingface\n modelscope_model_id: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n \n # LoRA 配置\n lora_r: int = 16\n lora_alpha: int = 32\n lora_dropout: float = 0.05\n lora_target_modules: List[str] = field(default_factory=lambda: [\n \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n \"gate_proj\", \"up_proj\", \"down_proj\"\n ])\n \n # 输出路径\n lora_output_dir: str = str(OUTPUT_DIR / \"lora_adapter\")\n merged_model_dir: str = str(OUTPUT_DIR / \"merged_model\")\n logs_dir: str = str(OUTPUT_DIR / \"logs\")\n\n\n@dataclass\nclass TrainingConfig:\n \"\"\"训练配置\"\"\"\n # 训练参数\n num_train_epochs: int = 2 # 防止过拟合\n per_device_train_batch_size: int = 1\n gradient_accumulation_steps: int = 16\n learning_rate: float = 2e-4\n warmup_ratio: float = 0.1\n lr_scheduler_type: str = \"cosine\"\n max_seq_length: int = 512\n \n # 优化配置(针对8GB显存)\n fp16: bool = True\n gradient_checkpointing: bool = True\n optim: str = \"paged_adamw_8bit\"\n \n # 量化配置\n load_in_4bit: bool = True\n bnb_4bit_quant_type: str = \"nf4\"\n bnb_4bit_use_double_quant: bool = True\n \n # 保存策略\n save_strategy: str = \"epoch\"\n logging_steps: int = 10\n \n # 数据\n train_file: str = str(DATA_DIR / \"processed\" / \"train.json\")\n val_file: str = str(DATA_DIR / \"processed\" / \"val.json\")\n val_ratio: float = 0.05 # 验证集比例\n\n\n@dataclass\nclass QualityFilterConfig:\n \"\"\"质量过滤配置\"\"\"\n # AI痕迹关键词(必须过滤)\n ai_patterns: List[str] = field(default_factory=lambda: [\n \"作为AI\", \"作为一个AI\", \"作为人工智能\",\n \"我是AI\", \"我是一个AI\", \"我是人工智能\",\n \"根据我的分析\", \"根据分析\", \n \"我理解您的感受\", \"我理解你的感受\",\n \"首先,其次\", \"第一,第二\",\n \"以下是\", \"以下建议\",\n \"请问您\", \"您可以考虑\",\n ])\n \n # 必须包含的情感词(至少一个)\n emotion_words: List[str] = field(default_factory=lambda: [\n \"哈哈\", \"嗯\", \"啊\", \"emmm\", \"呜呜\", \n \"唉\", \"诶\", \"噢\", \"嘛\", \"啦\", \"吧\",\n \"!\", \"~\", \"...\", \"?\",\n \"懂\", \"真的\", \"太\", \"好\", \"超\",\n ])\n \n # 最小对话轮次\n min_turns: int = 4 # 至少2轮(4条消息)\n \n # 反问比例上限\n max_question_ratio: float = 0.3 # assistant回复中问号结尾的比例\n\n\n# 全局配置实例\ndata_config = DataConfig()\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\nquality_config = QualityFilterConfig()\n\n"}, "ba1387eb6994d635b360f41363dcdbeddc2bae89": {"t": 1785768303.0282798, "n": 3513, "h": "15cde91981b4446a", "c": "\"\"\"\n训练配置\n\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n# 项目根目录\nTRAINING_ROOT = Path(__file__).parent\nDATA_DIR = TRAINING_ROOT / \"data\"\nOUTPUT_DIR = TRAINING_ROOT / \"output\"\n\n\n@dataclass\nclass DataConfig:\n \"\"\"数据配置\"\"\"\n # 蒸馏API配置\n api_base_url: str = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n api_model: str = \"deepseek-v3.2\" # 阿里云百炼的 DeepSeek\n api_key_env: str = \"sk-ad84676a8bf64a87924f2da0a98942e8\"\n \n # 数据路径\n scenarios_file: str = str(DATA_DIR / \"scenarios.json\")\n raw_data_dir: str = str(DATA_DIR / \"raw\")\n processed_data_dir: str = str(DATA_DIR / \"processed\")\n \n # 数据生成参数\n num_samples: int = 20000 # 目标数据量\n samples_per_file: int = 500 # 每个文件保存的样本数\n max_retries: int = 3 # API调用失败重试次数\n temperature: float = 0.9 # 生成温度(高一点增加多样性)\n max_tokens: int = 1500 # 单次生成最大token\n \n # 并发配置\n concurrent_requests: int = 10 # 并发请求数\n request_delay: float = 0.2 # 请求间隔(秒)\n \n @property\n def api_key(self) -> str:\n return self.api_key_env\n\n\n@dataclass\nclass ModelConfig:\n \"\"\"模型配置\"\"\"\n # 基座模型\n base_model_name: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n base_model_local: str = str(OUTPUT_DIR / \"base_model\")\n \n # 下载源\n download_source: str = \"modelscope\" # modelscope 或 huggingface\n modelscope_model_id: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n \n # LoRA 配置\n lora_r: int = 16\n lora_alpha: int = 32\n lora_dropout: float = 0.05\n lora_target_modules: List[str] = field(default_factory=lambda: [\n \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n \"gate_proj\", \"up_proj\", \"down_proj\"\n ])\n \n # 输出路径\n lora_output_dir: str = str(OUTPUT_DIR / \"lora_adapter\")\n merged_model_dir: str = str(OUTPUT_DIR / \"merged_model\")\n logs_dir: str = str(OUTPUT_DIR / \"logs\")\n\n\n@dataclass\nclass TrainingConfig:\n \"\"\"训练配置\"\"\"\n # 训练参数\n num_train_epochs: int = 2 # 防止过拟合\n per_device_train_batch_size: int = 1\n gradient_accumulation_steps: int = 16\n learning_rate: float = 2e-4\n warmup_ratio: float = 0.1\n lr_scheduler_type: str = \"cosine\"\n max_seq_length: int = 512\n \n # 优化配置(针对8GB显存)\n fp16: bool = True\n gradient_checkpointing: bool = True\n optim: str = \"paged_adamw_8bit\"\n \n # 量化配置\n load_in_4bit: bool = True\n bnb_4bit_quant_type: str = \"nf4\"\n bnb_4bit_use_double_quant: bool = True\n \n # 保存策略\n save_strategy: str = \"epoch\"\n logging_steps: int = 10\n \n # 数据\n train_file: str = str(DATA_DIR / \"processed\" / \"train.json\")\n val_file: str = str(DATA_DIR / \"processed\" / \"val.json\")\n val_ratio: float = 0.05 # 验证集比例\n\n\n@dataclass\nclass QualityFilterConfig:\n \"\"\"质量过滤配置\"\"\"\n # AI痕迹关键词(必须过滤)\n ai_patterns: List[str] = field(default_factory=lambda: [\n \"作为AI\", \"作为一个AI\", \"作为人工智能\",\n \"我是AI\", \"我是一个AI\", \"我是人工智能\",\n \"根据我的分析\", \"根据分析\", \n \"我理解您的感受\", \"我理解你的感受\",\n \"首先,其次\", \"第一,第二\",\n \"以下是\", \"以下建议\",\n \"请问您\", \"您可以考虑\",\n ])\n \n # 必须包含的情感词(至少一个)\n emotion_words: List[str] = field(default_factory=lambda: [\n \"哈哈\", \"嗯\", \"啊\", \"emmm\", \"呜呜\", \n \"唉\", \"诶\", \"噢\", \"嘛\", \"啦\", \"吧\",\n \"!\", \"~\", \"...\", \"?\",\n \"懂\", \"真的\", \"太\", \"好\", \"超\",\n ])\n \n # 最小对话轮次\n min_turns: int = 4 # 至少2轮(4条消息)\n \n # 反问比例上限\n max_question_ratio: float = 0.3 # assistant回复中问号结尾的比例\n\n\n# 全局配置实例\ndata_config = DataConfig()\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\nquality_config = QualityFilterConfig()\n\n"}, "693faa7902b9d1e53f8ff39c7d89e5503ce3572a": {"t": 1785768304.2606597, "n": 3505, "h": "8c8f5b504cfea717", "c": "\"\"\"\n训练配置\n\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n# 项目根目录\nTRAINING_ROOT = Path(__file__).parent\nDATA_DIR = TRAINING_ROOT / \"data\"\nOUTPUT_DIR = TRAINING_ROOT / \"output\"\n\n\n@dataclass\nclass DataConfig:\n \"\"\"数据配置\"\"\"\n # 蒸馏API配置\n api_base_url: str = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n api_model: str = \"deepseek-v3.2\" # 阿里云百炼的 DeepSeek\n api_key_env: str = \"sk-ad84676a8bf64a87924f2da0a98942e8\"\n \n # 数据路径\n scenarios_file: str = str(DATA_DIR / \"scenarios.json\")\n raw_data_dir: str = str(DATA_DIR / \"raw\")\n processed_data_dir: str = str(DATA_DIR / \"processed\")\n \n # 数据生成参数\n num_samples: int = 20000 # 目标数据量\n samples_per_file: int = 500 # 每个文件保存的样本数\n max_retries: int = 3 # API调用失败重试次数\n temperature: float = 0.9 # 生成温度(高一点增加多样性)\n max_tokens: int = 1500 # 单次生成最大token\n \n # 并发配置\n concurrent_requests: int = 10 # 并发请求数\n request_delay: float = 0.2 # 请求间隔(秒)\n \n @property\n def api_key(self) -> str:\n return self.api_key_env\n\n\n@dataclass\nclass ModelConfig:\n \"\"\"模型配置\"\"\"\n # 基座模型\n base_model_name: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n base_model_local: str = str(OUTPUT_DIR / \"base_model\")\n \n # 下载源\n download_source: str = \"modelscope\" # modelscope 或 huggingface\n modelscope_model_id: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n \n # LoRA 配置\n lora_r: int = 16\n lora_alpha: int = 32\n lora_dropout: float = 0.05\n lora_target_modules: List[str] = field(default_factory=lambda: [\n \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n \"gate_proj\", \"up_proj\", \"down_proj\"\n ])\n \n # 输出路径\n lora_output_dir: str = str(OUTPUT_DIR / \"lora_adapter\")\n merged_model_dir: str = str(OUTPUT_DIR / \"merged_model\")\n logs_dir: str = str(OUTPUT_DIR / \"logs\")\n\n\n@dataclass\nclass TrainingConfig:\n \"\"\"训练配置\"\"\"\n # 训练参数\n num_train_epochs: int = 3\n per_device_train_batch_size: int = 1\n gradient_accumulation_steps: int = 16\n learning_rate: float = 2e-4\n warmup_ratio: float = 0.1\n lr_scheduler_type: str = \"cosine\"\n max_seq_length: int = 512\n \n # 优化配置(针对8GB显存)\n fp16: bool = True\n gradient_checkpointing: bool = True\n optim: str = \"paged_adamw_8bit\"\n \n # 量化配置\n load_in_4bit: bool = True\n bnb_4bit_quant_type: str = \"nf4\"\n bnb_4bit_use_double_quant: bool = True\n \n # 保存策略\n save_strategy: str = \"epoch\"\n logging_steps: int = 10\n \n # 数据\n train_file: str = str(DATA_DIR / \"processed\" / \"train.json\")\n val_file: str = str(DATA_DIR / \"processed\" / \"val.json\")\n val_ratio: float = 0.05 # 验证集比例\n\n\n@dataclass\nclass QualityFilterConfig:\n \"\"\"质量过滤配置\"\"\"\n # AI痕迹关键词(必须过滤)\n ai_patterns: List[str] = field(default_factory=lambda: [\n \"作为AI\", \"作为一个AI\", \"作为人工智能\",\n \"我是AI\", \"我是一个AI\", \"我是人工智能\",\n \"根据我的分析\", \"根据分析\", \n \"我理解您的感受\", \"我理解你的感受\",\n \"首先,其次\", \"第一,第二\",\n \"以下是\", \"以下建议\",\n \"请问您\", \"您可以考虑\",\n ])\n \n # 必须包含的情感词(至少一个)\n emotion_words: List[str] = field(default_factory=lambda: [\n \"哈哈\", \"嗯\", \"啊\", \"emmm\", \"呜呜\", \n \"唉\", \"诶\", \"噢\", \"嘛\", \"啦\", \"吧\",\n \"!\", \"~\", \"...\", \"?\",\n \"懂\", \"真的\", \"太\", \"好\", \"超\",\n ])\n \n # 最小对话轮次\n min_turns: int = 4 # 至少2轮(4条消息)\n \n # 反问比例上限\n max_question_ratio: float = 0.3 # assistant回复中问号结尾的比例\n\n\n# 全局配置实例\ndata_config = DataConfig()\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\nquality_config = QualityFilterConfig()\n\n"}, "a2b4cb62e926b75385ff70f3edeb927e1707201a": {"t": 1785768305.4490323, "n": 3478, "h": "e1c89e52040e993e", "c": "\"\"\"\n训练配置\n\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n# 项目根目录\nTRAINING_ROOT = Path(__file__).parent\nDATA_DIR = TRAINING_ROOT / \"data\"\nOUTPUT_DIR = TRAINING_ROOT / \"output\"\n\n\n@dataclass\nclass DataConfig:\n \"\"\"数据配置\"\"\"\n # 蒸馏API配置\n api_base_url: str = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n api_model: str = \"deepseek-v3.2\" # 阿里云百炼的 DeepSeek\n api_key_env: str = \"sk-x x x\"\n \n # 数据路径\n scenarios_file: str = str(DATA_DIR / \"scenarios.json\")\n raw_data_dir: str = str(DATA_DIR / \"raw\")\n processed_data_dir: str = str(DATA_DIR / \"processed\")\n \n # 数据生成参数\n num_samples: int = 20000 # 目标数据量\n samples_per_file: int = 500 # 每个文件保存的样本数\n max_retries: int = 3 # API调用失败重试次数\n temperature: float = 0.9 # 生成温度(高一点增加多样性)\n max_tokens: int = 1500 # 单次生成最大token\n \n # 并发配置\n concurrent_requests: int = 10 # 并发请求数\n request_delay: float = 0.2 # 请求间隔(秒)\n \n @property\n def api_key(self) -> str:\n return self.api_key_env\n\n\n@dataclass\nclass ModelConfig:\n \"\"\"模型配置\"\"\"\n # 基座模型\n base_model_name: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n base_model_local: str = str(OUTPUT_DIR / \"base_model\")\n \n # 下载源\n download_source: str = \"modelscope\" # modelscope 或 huggingface\n modelscope_model_id: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n \n # LoRA 配置\n lora_r: int = 16\n lora_alpha: int = 32\n lora_dropout: float = 0.05\n lora_target_modules: List[str] = field(default_factory=lambda: [\n \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n \"gate_proj\", \"up_proj\", \"down_proj\"\n ])\n \n # 输出路径\n lora_output_dir: str = str(OUTPUT_DIR / \"lora_adapter\")\n merged_model_dir: str = str(OUTPUT_DIR / \"merged_model\")\n logs_dir: str = str(OUTPUT_DIR / \"logs\")\n\n\n@dataclass\nclass TrainingConfig:\n \"\"\"训练配置\"\"\"\n # 训练参数\n num_train_epochs: int = 3\n per_device_train_batch_size: int = 1\n gradient_accumulation_steps: int = 16\n learning_rate: float = 2e-4\n warmup_ratio: float = 0.1\n lr_scheduler_type: str = \"cosine\"\n max_seq_length: int = 512\n \n # 优化配置(针对8GB显存)\n fp16: bool = True\n gradient_checkpointing: bool = True\n optim: str = \"paged_adamw_8bit\"\n \n # 量化配置\n load_in_4bit: bool = True\n bnb_4bit_quant_type: str = \"nf4\"\n bnb_4bit_use_double_quant: bool = True\n \n # 保存策略\n save_strategy: str = \"epoch\"\n logging_steps: int = 10\n \n # 数据\n train_file: str = str(DATA_DIR / \"processed\" / \"train.json\")\n val_file: str = str(DATA_DIR / \"processed\" / \"val.json\")\n val_ratio: float = 0.05 # 验证集比例\n\n\n@dataclass\nclass QualityFilterConfig:\n \"\"\"质量过滤配置\"\"\"\n # AI痕迹关键词(必须过滤)\n ai_patterns: List[str] = field(default_factory=lambda: [\n \"作为AI\", \"作为一个AI\", \"作为人工智能\",\n \"我是AI\", \"我是一个AI\", \"我是人工智能\",\n \"根据我的分析\", \"根据分析\", \n \"我理解您的感受\", \"我理解你的感受\",\n \"首先,其次\", \"第一,第二\",\n \"以下是\", \"以下建议\",\n \"请问您\", \"您可以考虑\",\n ])\n \n # 必须包含的情感词(至少一个)\n emotion_words: List[str] = field(default_factory=lambda: [\n \"哈哈\", \"嗯\", \"啊\", \"emmm\", \"呜呜\", \n \"唉\", \"诶\", \"噢\", \"嘛\", \"啦\", \"吧\",\n \"!\", \"~\", \"...\", \"?\",\n \"懂\", \"真的\", \"太\", \"好\", \"超\",\n ])\n \n # 最小对话轮次\n min_turns: int = 4 # 至少2轮(4条消息)\n \n # 反问比例上限\n max_question_ratio: float = 0.3 # assistant回复中问号结尾的比例\n\n\n# 全局配置实例\ndata_config = DataConfig()\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\nquality_config = QualityFilterConfig()\n\n"}, "6c86018d16475279f8cb0338fba0b713645aa3e3": {"t": 1785768306.6207538, "n": 3505, "h": "8c8f5b504cfea717", "c": "\"\"\"\n训练配置\n\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n# 项目根目录\nTRAINING_ROOT = Path(__file__).parent\nDATA_DIR = TRAINING_ROOT / \"data\"\nOUTPUT_DIR = TRAINING_ROOT / \"output\"\n\n\n@dataclass\nclass DataConfig:\n \"\"\"数据配置\"\"\"\n # 蒸馏API配置\n api_base_url: str = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n api_model: str = \"deepseek-v3.2\" # 阿里云百炼的 DeepSeek\n api_key_env: str = \"sk-ad84676a8bf64a87924f2da0a98942e8\"\n \n # 数据路径\n scenarios_file: str = str(DATA_DIR / \"scenarios.json\")\n raw_data_dir: str = str(DATA_DIR / \"raw\")\n processed_data_dir: str = str(DATA_DIR / \"processed\")\n \n # 数据生成参数\n num_samples: int = 20000 # 目标数据量\n samples_per_file: int = 500 # 每个文件保存的样本数\n max_retries: int = 3 # API调用失败重试次数\n temperature: float = 0.9 # 生成温度(高一点增加多样性)\n max_tokens: int = 1500 # 单次生成最大token\n \n # 并发配置\n concurrent_requests: int = 10 # 并发请求数\n request_delay: float = 0.2 # 请求间隔(秒)\n \n @property\n def api_key(self) -> str:\n return self.api_key_env\n\n\n@dataclass\nclass ModelConfig:\n \"\"\"模型配置\"\"\"\n # 基座模型\n base_model_name: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n base_model_local: str = str(OUTPUT_DIR / \"base_model\")\n \n # 下载源\n download_source: str = \"modelscope\" # modelscope 或 huggingface\n modelscope_model_id: str = \"Qwen/Qwen2.5-1.5B-Instruct\"\n \n # LoRA 配置\n lora_r: int = 16\n lora_alpha: int = 32\n lora_dropout: float = 0.05\n lora_target_modules: List[str] = field(default_factory=lambda: [\n \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n \"gate_proj\", \"up_proj\", \"down_proj\"\n ])\n \n # 输出路径\n lora_output_dir: str = str(OUTPUT_DIR / \"lora_adapter\")\n merged_model_dir: str = str(OUTPUT_DIR / \"merged_model\")\n logs_dir: str = str(OUTPUT_DIR / \"logs\")\n\n\n@dataclass\nclass TrainingConfig:\n \"\"\"训练配置\"\"\"\n # 训练参数\n num_train_epochs: int = 3\n per_device_train_batch_size: int = 1\n gradient_accumulation_steps: int = 16\n learning_rate: float = 2e-4\n warmup_ratio: float = 0.1\n lr_scheduler_type: str = \"cosine\"\n max_seq_length: int = 512\n \n # 优化配置(针对8GB显存)\n fp16: bool = True\n gradient_checkpointing: bool = True\n optim: str = \"paged_adamw_8bit\"\n \n # 量化配置\n load_in_4bit: bool = True\n bnb_4bit_quant_type: str = \"nf4\"\n bnb_4bit_use_double_quant: bool = True\n \n # 保存策略\n save_strategy: str = \"epoch\"\n logging_steps: int = 10\n \n # 数据\n train_file: str = str(DATA_DIR / \"processed\" / \"train.json\")\n val_file: str = str(DATA_DIR / \"processed\" / \"val.json\")\n val_ratio: float = 0.05 # 验证集比例\n\n\n@dataclass\nclass QualityFilterConfig:\n \"\"\"质量过滤配置\"\"\"\n # AI痕迹关键词(必须过滤)\n ai_patterns: List[str] = field(default_factory=lambda: [\n \"作为AI\", \"作为一个AI\", \"作为人工智能\",\n \"我是AI\", \"我是一个AI\", \"我是人工智能\",\n \"根据我的分析\", \"根据分析\", \n \"我理解您的感受\", \"我理解你的感受\",\n \"首先,其次\", \"第一,第二\",\n \"以下是\", \"以下建议\",\n \"请问您\", \"您可以考虑\",\n ])\n \n # 必须包含的情感词(至少一个)\n emotion_words: List[str] = field(default_factory=lambda: [\n \"哈哈\", \"嗯\", \"啊\", \"emmm\", \"呜呜\", \n \"唉\", \"诶\", \"噢\", \"嘛\", \"啦\", \"吧\",\n \"!\", \"~\", \"...\", \"?\",\n \"懂\", \"真的\", \"太\", \"好\", \"超\",\n ])\n \n # 最小对话轮次\n min_turns: int = 4 # 至少2轮(4条消息)\n \n # 反问比例上限\n max_question_ratio: float = 0.3 # assistant回复中问号结尾的比例\n\n\n# 全局配置实例\ndata_config = DataConfig()\nmodel_config = ModelConfig()\ntraining_config = TrainingConfig()\nquality_config = QualityFilterConfig()\n\n"}}}} |