shimokumo / src /config.py
Shimokumo's picture
Upload folder using huggingface_hub
94fd0b0 verified
Raw
History Blame Contribute Delete
5.98 kB
"""
霜云(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