"""接口层 - 提示词加载接口"""
from abc import ABC, abstractmethod
from typing import Dict, Any


class PromptLoader(ABC):
    """提示词加载接口"""

    @abstractmethod
    def load_prompt(self, prompt_name: str) -> Dict[str, str]:
        """
        加载提示词

        Args:
            prompt_name: 提示词名称（对应YAML文件名，不含扩展名）

        Returns:
            包含 system 和 user_template 的字典
            {
                "system": "系统提示词",
                "user_template": "用户提示词模板",
                "description": "提示词描述",
                "name": "提示词名称"
            }
        """
        pass

    @abstractmethod
    def render_template(
        self,
        template: str,
        variables: Dict[str, Any]
    ) -> str:
        """
        渲染提示词模板

        Args:
            template: 模板字符串，支持 {{ variable }} 语法
            variables: 变量字典

        Returns:
            渲染后的字符串
        """
        pass

    @abstractmethod
    def load_chain_config(self, config_path: str) -> Dict[str, Any]:
        """
        加载提示链配置

        Args:
            config_path: 配置文件路径

        Returns:
            提示链配置，包含 steps 列表
            {
                "chain_name": "链名称",
                "description": "描述",
                "steps": [...]
            }
        """
        pass
