- 添加 VLM 客户端支持 - 优化解析器配置 - 添加配置示例文件 - 生成新的 gRPC protobuf 文件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
85 lines
2.4 KiB
Python
85 lines
2.4 KiB
Python
"""
|
|
配置管理模块
|
|
"""
|
|
import os
|
|
import yaml
|
|
import logging
|
|
from typing import Optional, Dict, Any
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# 默认配置
|
|
DEFAULT_CONFIG = {
|
|
"vlm": {
|
|
"enabled": False,
|
|
"provider": "openai",
|
|
"model": "gpt-4o",
|
|
"api_key": "",
|
|
"base_url": "",
|
|
"prompt": ""
|
|
},
|
|
"server": {
|
|
"port": 50051,
|
|
"max_workers": 10,
|
|
"log_level": "INFO"
|
|
}
|
|
}
|
|
|
|
|
|
def load_config(config_path: Optional[str] = None) -> Dict[str, Any]:
|
|
"""加载配置文件"""
|
|
if config_path is None:
|
|
# 默认查找 config.yaml
|
|
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
config_path = os.path.join(base_dir, "config.yaml")
|
|
|
|
# 环境变量覆盖
|
|
vlm_api_key = os.environ.get("VLM_API_KEY", "")
|
|
if vlm_api_key:
|
|
DEFAULT_CONFIG["vlm"]["api_key"] = vlm_api_key
|
|
DEFAULT_CONFIG["vlm"]["enabled"] = True
|
|
logger.info("VLM enabled via environment variable")
|
|
|
|
vlm_provider = os.environ.get("VLM_PROVIDER", "")
|
|
if vlm_provider:
|
|
DEFAULT_CONFIG["vlm"]["provider"] = vlm_provider
|
|
|
|
vlm_model = os.environ.get("VLM_MODEL", "")
|
|
if vlm_model:
|
|
DEFAULT_CONFIG["vlm"]["model"] = vlm_model
|
|
|
|
# 尝试加载配置文件
|
|
if os.path.exists(config_path):
|
|
try:
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
file_config = yaml.safe_load(f)
|
|
if file_config:
|
|
# 合并配置
|
|
for key in file_config:
|
|
if key in DEFAULT_CONFIG:
|
|
DEFAULT_CONFIG[key].update(file_config[key])
|
|
logger.info(f"Loaded config from {config_path}")
|
|
except Exception as e:
|
|
logger.warning(f"Failed to load config: {e}")
|
|
|
|
# 检查 VLM 是否有效
|
|
if DEFAULT_CONFIG["vlm"]["enabled"] and not DEFAULT_CONFIG["vlm"]["api_key"]:
|
|
logger.warning("VLM enabled but API key is empty, disabling VLM")
|
|
DEFAULT_CONFIG["vlm"]["enabled"] = False
|
|
|
|
return DEFAULT_CONFIG
|
|
|
|
|
|
def get_vlm_config() -> Optional[Dict[str, Any]]:
|
|
"""获取 VLM 配置"""
|
|
config = load_config()
|
|
if config.get("vlm", {}).get("enabled") and config["vlm"].get("api_key"):
|
|
return config["vlm"]
|
|
return None
|
|
|
|
|
|
def get_server_config() -> Dict[str, Any]:
|
|
"""获取服务器配置"""
|
|
config = load_config()
|
|
return config.get("server", DEFAULT_CONFIG["server"])
|