Spaces:
Sleeping
Sleeping
hugh2023
Add multi-modal agent system with media analysis, web scraping, and enhanced configuration management
adec1cb | """ | |
| 多模态智能体系统配置文件 | |
| """ | |
| import os | |
| import json | |
| from typing import Optional, Dict, Any | |
| from pathlib import Path | |
| class Config: | |
| """系统配置类""" | |
| # API配置文件路径 | |
| API_KEYS_FILE: str = "api_keys.json" | |
| # OpenAI配置 | |
| OPENAI_API_KEY: Optional[str] = None | |
| OPENAI_MODEL: str = "gpt-4o" | |
| OPENAI_TEMPERATURE: float = 0.7 | |
| # Hugging Face配置 | |
| HUGGINGFACE_API_KEY: Optional[str] = None | |
| # 搜索引擎配置 | |
| SEARCH_ENGINE_TYPE: str = "duckduckgo" | |
| SEARCH_ENGINE_API_KEY: Optional[str] = None | |
| # 模型配置 | |
| IMAGE_CAPTION_MODEL: str = "Salesforce/blip-image-captioning-base" | |
| IMAGE_CLASSIFICATION_MODEL: str = "microsoft/resnet-50" | |
| OBJECT_DETECTION_MODEL: str = "facebook/detr-resnet-50" | |
| GIT_MODEL: str = "microsoft/git-base" | |
| # 系统配置 | |
| DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true" | |
| LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") | |
| # 媒体处理配置 | |
| MAX_VIDEO_DURATION: int = 300 # 最大视频时长(秒) | |
| FRAMES_TO_ANALYZE: int = 5 # 视频分析帧数 | |
| MAX_IMAGE_SIZE: int = 1024 # 最大图像尺寸 | |
| # 缓存配置 | |
| CACHE_DIR: str = "./cache" | |
| TEMP_DIR: str = "./temp" | |
| def load_api_keys(cls) -> bool: | |
| """从文件加载API密钥""" | |
| try: | |
| api_file = Path(cls.API_KEYS_FILE) | |
| if not api_file.exists(): | |
| print(f"⚠️ API配置文件 {cls.API_KEYS_FILE} 不存在") | |
| print("请创建该文件并配置你的API密钥") | |
| return False | |
| with open(api_file, 'r', encoding='utf-8') as f: | |
| api_config = json.load(f) | |
| # 加载OpenAI配置 | |
| if 'openai' in api_config and api_config['openai'].get('api_key'): | |
| cls.OPENAI_API_KEY = api_config['openai']['api_key'] | |
| print("✅ OpenAI API密钥已加载") | |
| else: | |
| print("⚠️ OpenAI API密钥未配置") | |
| # 加载Hugging Face配置 | |
| if 'huggingface' in api_config and api_config['huggingface'].get('api_key'): | |
| cls.HUGGINGFACE_API_KEY = api_config['huggingface']['api_key'] | |
| print("✅ Hugging Face API密钥已加载") | |
| # 加载搜索引擎配置 | |
| if 'search_engine' in api_config: | |
| search_config = api_config['search_engine'] | |
| cls.SEARCH_ENGINE_TYPE = search_config.get('type', 'duckduckgo') | |
| cls.SEARCH_ENGINE_API_KEY = search_config.get('api_key') | |
| print(f"✅ 搜索引擎类型: {cls.SEARCH_ENGINE_TYPE}") | |
| return True | |
| except json.JSONDecodeError as e: | |
| print(f"❌ API配置文件格式错误: {e}") | |
| return False | |
| except Exception as e: | |
| print(f"❌ 加载API配置失败: {e}") | |
| return False | |
| def validate(cls) -> bool: | |
| """验证配置是否完整""" | |
| # 首先尝试从文件加载API密钥 | |
| cls.load_api_keys() | |
| # 如果文件加载失败,尝试从环境变量加载 | |
| if not cls.OPENAI_API_KEY: | |
| cls.OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
| if not cls.HUGGINGFACE_API_KEY: | |
| cls.HUGGINGFACE_API_KEY = os.getenv("HUGGINGFACE_API_KEY") | |
| # 验证必要的配置 | |
| if not cls.OPENAI_API_KEY: | |
| print("❌ 缺少OpenAI API密钥") | |
| print("请在 api_keys.json 文件中配置或设置环境变量 OPENAI_API_KEY") | |
| return False | |
| return True | |
| def print_config(cls): | |
| """打印当前配置""" | |
| print("=== 多模态智能体系统配置 ===") | |
| print(f"OpenAI模型: {cls.OPENAI_MODEL}") | |
| print(f"OpenAI温度: {cls.OPENAI_TEMPERATURE}") | |
| print(f"OpenAI API密钥: {'已配置' if cls.OPENAI_API_KEY else '未配置'}") | |
| print(f"Hugging Face API密钥: {'已配置' if cls.HUGGINGFACE_API_KEY else '未配置'}") | |
| print(f"搜索引擎类型: {cls.SEARCH_ENGINE_TYPE}") | |
| print(f"图像描述模型: {cls.IMAGE_CAPTION_MODEL}") | |
| print(f"图像分类模型: {cls.IMAGE_CLASSIFICATION_MODEL}") | |
| print(f"对象检测模型: {cls.OBJECT_DETECTION_MODEL}") | |
| print(f"调试模式: {cls.DEBUG}") | |
| print(f"日志级别: {cls.LOG_LEVEL}") | |
| print("=" * 30) | |