|
|
| from pydantic import Field, model_validator
|
| from typing import Dict, ClassVar
|
| from .i18n import I18nMixin, Description
|
|
|
|
|
| class SystemConfig(I18nMixin):
|
| """System configuration settings."""
|
|
|
| conf_version: str = Field(..., alias="conf_version")
|
| host: str = Field(..., alias="host")
|
| port: int = Field(..., alias="port")
|
| config_alts_dir: str = Field(..., alias="config_alts_dir")
|
| tool_prompts: Dict[str, str] = Field(..., alias="tool_prompts")
|
| enable_proxy: bool = Field(False, alias="enable_proxy")
|
|
|
| DESCRIPTIONS: ClassVar[Dict[str, Description]] = {
|
| "conf_version": Description(en="Configuration version", zh="配置文件版本"),
|
| "host": Description(en="Server host address", zh="服务器主机地址"),
|
| "port": Description(en="Server port number", zh="服务器端口号"),
|
| "config_alts_dir": Description(
|
| en="Directory for alternative configurations", zh="备用配置目录"
|
| ),
|
| "tool_prompts": Description(
|
| en="Tool prompts to be inserted into persona prompt",
|
| zh="要插入到角色提示词中的工具提示词",
|
| ),
|
| "enable_proxy": Description(
|
| en="Enable proxy mode for multiple clients",
|
| zh="启用代理模式以支持多个客户端使用一个 ws 连接",
|
| ),
|
| }
|
|
|
| @model_validator(mode="after")
|
| def check_port(cls, values):
|
| port = values.port
|
| if port < 0 or port > 65535:
|
| raise ValueError("Port must be between 0 and 65535")
|
| return values
|
|
|