config_util.py
2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# -*- coding: utf-8 -*-
"""
AIfeng/2025-01-27
配置管理工具模块
统一管理项目配置参数
"""
import json
import os
from typing import Dict, Any
class ConfigManager:
"""配置管理器"""
def __init__(self):
self._config = {}
self._load_default_config()
self._load_config_files()
def _load_default_config(self):
"""加载默认配置"""
self._config.update({
# FunASR配置
'local_asr_ip': '127.0.0.1',
'local_asr_port': 10197,
# 阿里云NLS配置
'key_ali_nls_key_id': '',
'key_ali_nls_key_secret': '',
'key_ali_nls_app_key': '',
# 其他ASR配置
'asr_timeout': 30,
'asr_reconnect_delay': 1,
'asr_max_reconnect_attempts': 5,
})
def _load_config_files(self):
"""加载配置文件"""
config_files = [
'config/asr_config.json',
'config/llm_config.json',
'config/doubao_config.json'
]
for config_file in config_files:
if os.path.exists(config_file):
try:
with open(config_file, 'r', encoding='utf-8') as f:
file_config = json.load(f)
self._config.update(file_config)
except Exception as e:
print(f"警告: 加载配置文件 {config_file} 失败: {e}")
def get(self, key: str, default=None):
"""获取配置值"""
return self._config.get(key, default)
def set(self, key: str, value: Any):
"""设置配置值"""
self._config[key] = value
def update(self, config_dict: Dict[str, Any]):
"""批量更新配置"""
self._config.update(config_dict)
def save_to_file(self, file_path: str):
"""保存配置到文件"""
os.makedirs(os.path.dirname(file_path), exist_ok=True)
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(self._config, f, ensure_ascii=False, indent=2)
def __getattr__(self, name):
"""支持属性访问方式"""
if name in self._config:
return self._config[name]
raise AttributeError(f"配置项 '{name}' 不存在")
# 全局配置实例
_config_manager = ConfigManager()
# 兼容原有的属性访问方式
local_asr_ip = _config_manager.local_asr_ip
local_asr_port = _config_manager.local_asr_port
key_ali_nls_key_id = _config_manager.key_ali_nls_key_id
key_ali_nls_key_secret = _config_manager.key_ali_nls_key_secret
key_ali_nls_app_key = _config_manager.key_ali_nls_app_key
# 导出配置管理器
config = _config_manager