feat: 新增maim_message配置,支持wss,tcp模式,支持token

This commit is contained in:
tcmofashi
2025-05-23 18:10:37 +08:00
parent d2a3f83bd6
commit 5536c5bf76
4 changed files with 76 additions and 4 deletions

View File

@@ -3,25 +3,53 @@ import os
import importlib.metadata import importlib.metadata
from maim_message import MessageServer from maim_message import MessageServer
from src.common.logger_manager import get_logger from src.common.logger_manager import get_logger
from src.config.config import global_config
# 检查maim_message版本 # 检查maim_message版本
try: try:
maim_message_version = importlib.metadata.version("maim_message") maim_message_version = importlib.metadata.version("maim_message")
version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 0] version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 3]
except (importlib.metadata.PackageNotFoundError, ValueError): except (importlib.metadata.PackageNotFoundError, ValueError):
version_compatible = False version_compatible = False
# 根据版本决定是否使用自定义logger # 读取配置项
maim_message_config = global_config.maim_message
# 设置基本参数
kwargs = { kwargs = {
"host": os.environ["HOST"], "host": os.environ["HOST"],
"port": int(os.environ["PORT"]), "port": int(os.environ["PORT"]),
"app": global_server.get_app(), "app": global_server.get_app(),
} }
# 只有在版本 >= 0.3.0 时才使用自定义logger # 只有在版本 >= 0.3.0 时才使用高级特性
if version_compatible: if version_compatible:
# 添加自定义logger
maim_message_logger = get_logger("maim_message") maim_message_logger = get_logger("maim_message")
kwargs["custom_logger"] = maim_message_logger kwargs["custom_logger"] = maim_message_logger
# 添加token认证
if maim_message_config.auth_token:
if len(maim_message_config.auth_token) > 0:
kwargs["enable_token"] = True
if maim_message_config.use_custom:
# 添加WSS模式支持
del kwargs["app"]
kwargs["host"] = maim_message_config.host
kwargs["port"] = maim_message_config.port
kwargs["mode"] = maim_message_config.mode
if maim_message_config.use_wss:
if maim_message_config.cert_file:
kwargs["ssl_certfile"] = maim_message_config.cert_file
if maim_message_config.key_file:
kwargs["ssl_keyfile"] = maim_message_config.key_file
kwargs["enable_custom_uvicorn_logger"] = False
global_api = MessageServer(**kwargs) global_api = MessageServer(**kwargs)
if version_compatible and maim_message_config.auth_token:
for token in maim_message_config.auth_token:
global_api.add_valid_token(token)

View File

@@ -31,6 +31,7 @@ from src.config.official_configs import (
ModelConfig, ModelConfig,
FocusChatProcessorConfig, FocusChatProcessorConfig,
MessageReceiveConfig, MessageReceiveConfig,
MaimMessageConfig,
) )
install(extra_lines=3) install(extra_lines=3)
@@ -157,6 +158,7 @@ class Config(ConfigBase):
telemetry: TelemetryConfig telemetry: TelemetryConfig
experimental: ExperimentalConfig experimental: ExperimentalConfig
model: ModelConfig model: ModelConfig
maim_message: MaimMessageConfig
def load_config(config_path: str) -> Config: def load_config(config_path: str) -> Config:

View File

@@ -355,6 +355,35 @@ class ExperimentalConfig(ConfigBase):
"""是否启用PFC""" """是否启用PFC"""
@dataclass
class MaimMessageConfig(ConfigBase):
"""maim_message配置类"""
use_custom: bool = False
"""是否使用自定义的maim_message配置"""
host: str = "127.0.0.1"
"""主机地址"""
port: int = 8090
""""端口号"""
mode: str = "ws"
"""连接模式支持ws和tcp"""
use_wss: bool = False
"""是否使用WSS安全连接"""
cert_file: str = ""
"""SSL证书文件路径仅在use_wss=True时有效"""
key_file: str = ""
"""SSL密钥文件路径仅在use_wss=True时有效"""
auth_token: list[str] = field(default_factory=lambda: [])
"""认证令牌用于API验证为空则不启用验证"""
@dataclass @dataclass
class ModelConfig(ConfigBase): class ModelConfig(ConfigBase):
"""模型配置类""" """模型配置类"""

View File

@@ -169,6 +169,18 @@ max_length = 256 # 回复允许的最大长度
max_sentence_num = 4 # 回复允许的最大句子数 max_sentence_num = 4 # 回复允许的最大句子数
enable_kaomoji_protection = false # 是否启用颜文字保护 enable_kaomoji_protection = false # 是否启用颜文字保护
[maim_message]
auth_token = [] # 认证令牌用于API验证为空则不启用验证
# 以下项目若要使用需要打开use_custom并单独配置maim_message的服务器
use_custom = false # 是否启用自定义的maim_message服务器注意这需要设置新的端口不能与.env重复
host="127.0.0.1"
port=8090
mode="ws" # 支持ws和tcp两种模式
use_wss = false # 是否使用WSS安全连接只支持ws模式
cert_file = "" # SSL证书文件路径仅在use_wss=true时有效
key_file = "" # SSL密钥文件路径仅在use_wss=true时有效
[telemetry] #发送统计信息,主要是看全球有多少只麦麦 [telemetry] #发送统计信息,主要是看全球有多少只麦麦
enable = true enable = true
@@ -292,4 +304,5 @@ pri_out = 8
name = "Qwen/Qwen2.5-32B-Instruct" name = "Qwen/Qwen2.5-32B-Instruct"
provider = "SILICONFLOW" provider = "SILICONFLOW"
pri_in = 1.26 pri_in = 1.26
pri_out = 1.26 pri_out = 1.26