Spaces:
Sleeping
Sleeping
File size: 4,577 Bytes
adec1cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | """
多模态智能体系统配置文件
"""
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"
@classmethod
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
@classmethod
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
@classmethod
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)
|