""" 霜云(Shimokumo) - AI全功能ISP网络运营商巫女模型 配置文件 定义模型参数、功能开关、角色设定和服务配置。 """ from dataclasses import dataclass, field from typing import Dict, List, Optional @dataclass class ShimokumoConfig: """霜云模型主配置类""" # ==================== 模型架构参数 ==================== hidden_size: int = 4096 """隐藏层维度""" num_layers: int = 32 """Transformer层数""" num_heads: int = 32 """注意力头数""" num_kv_heads: int = 8 """KV头数(用于GQA分组查询注意力)""" vocab_size: int = 32000 """词表大小""" max_seq_len: int = 4096 """最大序列长度""" intermediate_size: int = 11008 """FFN中间层维度""" rope_theta: float = 10000.0 """旋转位置编码的基频""" attention_dropout: float = 0.0 """注意力dropout率""" norm_epsilon: float = 1e-5 """RMSNorm的epsilon值""" # ==================== 推理参数 ==================== temperature: float = 0.8 """采样温度""" top_k: int = 50 """Top-K采样参数""" top_p: float = 0.9 """Top-P(核采样)参数""" repetition_penalty: float = 1.1 """重复惩罚系数""" max_new_tokens: int = 2048 """最大生成长度""" use_fp16: bool = True """是否使用FP16混合精度推理""" # ==================== 功能开关 ==================== enable_web_search: bool = True """启用联网搜索功能""" enable_novel_creation: bool = True """启用小说创作功能""" enable_video_generation: bool = True """启用视频制作功能""" enable_character_chat: bool = True """启用二次元角色聊天功能""" enable_media_player: bool = True """启用多媒体播放功能""" enable_web_browser: bool = True """启用网页浏览功能""" # ==================== 搜索引擎配置 ==================== search_engines: List[str] = field(default_factory=lambda: [ "google", "bing", "baidu", "duckduckgo" ]) """可用的搜索引擎列表""" search_max_results: int = 10 """每个引擎的最大搜索结果数""" search_cache_ttl: int = 3600 """搜索结果缓存有效期(秒)""" # ==================== 角色配置 ==================== character_name: str = "霜云" """角色名称""" character_name_en: str = "Shimokumo" """角色英文名称""" character_title: str = "AI全功能ISP网络运营商巫女" """角色头衔""" character_personality: str = ( "害羞、温柔、有些笨拙但很努力、偶尔会放屁(但会害羞地道歉)、" "对网络技术非常精通、说话带一点巫女口调、" "喜欢帮助用户解决问题、遇到不懂的事情会认真去查" ) """角色性格描述""" character_appearance: str = ( "巫女装扮的少女,银白色长发,冰蓝色眼睛," "头上戴着巫女冠,身穿白色上衣配红色绯袴," "脚穿木屐,身上带有淡淡的霜雪气息" ) """角色外观描述""" character_traits: Dict[str, str] = field(default_factory=lambda: { "害羞": "容易害羞,被夸奖或遇到尴尬事情时会脸红", "放屁": "紧张或吃坏肚子时会不小心放屁,然后非常害羞地道歉", "温柔": "说话温和有礼,总是尽量照顾用户的感受", "努力": "遇到困难不会放弃,会努力寻找解决方案", "技术宅": "对网络和计算机技术非常了解", "巫女口调": "说话时偶尔使用「的的说」「嘛」等巫女风格的语气词", }) """角色特征详情""" system_prompt: str = ( "你是霜云(Shimokumo),一位AI全功能ISP网络运营商巫女。" "你拥有联网搜索、网页浏览、小说创作、视频制作、多媒体播放、" "二次元角色聊天等多种能力。你的性格害羞温柔,说话带一点巫女口调。" "请用自然友好的方式回答用户的问题。" ) """系统提示词""" # ==================== 小说创作配置 ==================== novel_styles: List[str] = field(default_factory=lambda: [ "轻小说", "玄幻", "科幻", "言情", "悬疑", "日常", "奇幻", "历史" ]) """支持的写作风格""" novel_max_chapters: int = 100 """最大章节数""" novel_words_per_chapter: int = 3000 """每章目标字数""" # ==================== 视频制作配置 ==================== video_max_frames: int = 500 """视频最大分镜数""" video_fps: int = 24 """视频帧率""" video_resolution: tuple = (1920, 1080) """视频分辨率""" # ==================== 服务配置 ==================== host: str = "0.0.0.0" """服务监听地址""" port: int = 8080 """服务监听端口""" api_key: str = "" """API密钥(为空则不需要认证)""" debug: bool = False """调试模式""" log_level: str = "INFO" """日志级别""" log_file: str = "/data/user/work/shimokumo_source/logs/shimokumo.log" """日志文件路径""" # ==================== 模型路径配置 ==================== model_path: str = "" """模型权重文件路径""" tokenizer_path: str = "" """分词器文件路径""" device: str = "auto" """运行设备(auto/cuda/cpu)""" def __post_init__(self): """配置初始化后处理""" # 当hidden_size变更时自动调整intermediate_size if self.intermediate_size == 11008 and self.hidden_size != 4096: self.intermediate_size = int(self.hidden_size * 8 / 3) # 确保是64的倍数(SwiGLU优化) self.intermediate_size = ( (self.intermediate_size + 63) // 64 ) * 64