"""入口文件 - 应用启动"""
import asyncio
import logging
from .bootstrap import Bootstrap


# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)


async def main():
    """主程序"""

    # 打印支持的模型类型
    supported_models = Bootstrap.get_supported_models()
    logger.info(f"支持的模型类型: {', '.join(supported_models)}")

    # 创建处理器（使用配置文件中的默认模型）
    processor = Bootstrap.create_processor()

    # 打印模型信息
    model_info = processor.get_model_info()
    logger.info(f"当前模型: {model_info['model_id']}")
    logger.info(f"服务器地址: {model_info['server_url']}")

    # 示例：执行提示链
    # 注意：需要先创建相应的配置文件和提示词文件
    try:
        result = await processor.process(
            chain_config_path="config/prompts/chain_config.yaml",
            input_data={
                "content": "这是一段待处理的文本内容..."
            }
        )

        logger.info("处理完成")
        logger.info(f"最终结果: {result['final_result']}")

        # 打印各步骤结果
        for step in result['steps']:
            logger.info(f"步骤 {step['name']}: {step['result']}")

    except FileNotFoundError as e:
        logger.warning(f"配置文件未找到: {e}")
        logger.info("请先创建 config/prompts/ 目录和相应的配置文件")
    except Exception as e:
        logger.error(f"处理失败: {e}")


async def example_custom_model():
    """使用自定义模型的示例"""
    # 创建使用特定模型的处理器
    processor = Bootstrap.create_processor(
        model_type="qwen",  # 可选: qwen, gemini, deepseek, doubao
        temperature=0.5,      # 可选: 覆盖默认温度
        max_tokens=2048      # 可选: 覆盖默认最大token数
    )

    logger.info(f"使用模型: {processor.get_model_info()['model_id']}")


if __name__ == "__main__":
    # 运行主程序
    asyncio.run(main())
