import yaml
from pathlib import Path

def load_config(config_file: str) -> dict:
    """加载 YAML 配置文件。

    Args:
        config_file: YAML 配置文件的路径。

    Returns:
        包含配置信息的字典。
    """
    with open(config_file, 'r', encoding='utf-8') as f:
        config = yaml.safe_load(f)
    return config

def merge_configs(base_config: dict, task_config: dict) -> dict:
    """将特定于任务的配置合并到基础配置中。

    Args:
        base_config: 基础（默认）配置。
        task_config: 要合并的特定于任务的配置。

    Returns:
        合并后的配置字典。
    """
    merged = base_config.copy() # 复制基础配置
    # 遍历任务配置中的键值对
    for key, value in task_config.items():
        # 如果值是字典且键也存在于合并后的配置中，则递归合并
        if isinstance(value, dict) and key in merged and isinstance(merged[key], dict):
            merged[key] = merge_configs(merged[key], value)
        # 否则，直接用任务配置的值覆盖
        else:
            merged[key] = value
    return merged
