| """ |
| 霜云(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): |
| """配置初始化后处理""" |
| |
| if self.intermediate_size == 11008 and self.hidden_size != 4096: |
| self.intermediate_size = int(self.hidden_size * 8 / 3) |
| |
| self.intermediate_size = ( |
| (self.intermediate_size + 63) // 64 |
| ) * 64 |
|
|