Spaces:
Sleeping
Sleeping
| """ | |
| 配置文件 | |
| """ | |
| import os | |
| from pathlib import Path | |
| from typing import List | |
| # 项目根目录 | |
| BASE_DIR = Path(__file__).parent | |
| # API配置 | |
| API_CONFIG = { | |
| "title": "HR对话质量评估API", | |
| "description": "基于ML模型的HR对话质量评估系统", | |
| "version": "v1.0", | |
| "host": os.getenv("API_HOST", "0.0.0.0"), | |
| "port": int(os.getenv("API_PORT", 8000)), | |
| "debug": os.getenv("DEBUG", "false").lower() == "true", | |
| "reload": os.getenv("DEBUG", "false").lower() == "true", | |
| } | |
| # 模型配置 - 使用 HuggingFace Hub 上的微调模型(已设为公开) | |
| HF_SBERT_MODEL = "KarenYYH/sbert-hr-v2" | |
| HF_SENTIMENT_MODEL = "KarenYYH/sentiment-hr" | |
| local_sbert_path = BASE_DIR / "models" / "sbert-hr-v2" | |
| # 优先使用 HuggingFace Hub 上的微调模型 | |
| default_sbert = HF_SBERT_MODEL | |
| # 情绪分析微调模型路径 | |
| local_sentiment_path = BASE_DIR / "models" / "sentiment-hr" / "final_model" | |
| default_sentiment = HF_SENTIMENT_MODEL | |
| MODEL_CONFIG = { | |
| "cache_dir": os.getenv("MODEL_CACHE_DIR", str(BASE_DIR / "models" / "checkpoints")), | |
| "sentence_transformer_model": os.getenv( | |
| "SENTENCE_TRANSFORMER_MODEL", | |
| default_sbert | |
| ), | |
| # 情绪分析模型(微调版本) | |
| "sentiment_model_path": os.getenv( | |
| "SENTIMENT_MODEL_PATH", | |
| default_sentiment | |
| ), | |
| # 本地对话模型已移除,推荐使用 LLM API | |
| "dialogue_model_path": None, | |
| "device": "mps" if os.getenv("USE_MPS", "true").lower() == "true" and os.uname().sysname == "Darwin" else ("cuda" if os.getenv("USE_CUDA", "true").lower() == "true" else "cpu"), | |
| } | |
| # 数据路径 | |
| DATA_CONFIG = { | |
| "knowledge_base_path": os.getenv( | |
| "KNOWLEDGE_BASE_PATH", | |
| str(BASE_DIR / "data" / "knowledge_base.json") | |
| ), | |
| "sensitive_words_path": os.getenv( | |
| "SENSITIVE_WORDS_PATH", | |
| str(BASE_DIR / "data" / "sensitive_words.json") | |
| ), | |
| "whitelist_path": os.getenv( | |
| "WHITELIST_PATH", | |
| str(BASE_DIR / "data" / "whitelist.json") | |
| ), | |
| } | |
| # 评估阈值 | |
| EVALUATION_CONFIG = { | |
| "correctness": { | |
| "threshold": float(os.getenv("CORRECTNESS_THRESHOLD", 0.85)), | |
| "partial_threshold": float(os.getenv("PARTIAL_THRESHOLD", 0.6)), | |
| }, | |
| "sentiment": { | |
| "confidence_threshold": float(os.getenv("SENTIMENT_CONFIDENCE_THRESHOLD", 0.6)), | |
| }, | |
| "compliance": { | |
| "severity_levels": { | |
| "high": ["discrimination", "illegal_employment"], | |
| "medium": ["privacy_violation", "threat"], | |
| "low": ["other"] | |
| } | |
| } | |
| } | |
| # CORS配置 | |
| CORS_CONFIG = { | |
| "origins": os.getenv("CORS_ORIGINS", "*").split(","), | |
| "allow_credentials": os.getenv("CORS_ALLOW_CREDENTIALS", "true").lower() == "true", | |
| "allow_methods": ["*"], | |
| "allow_headers": ["*"], | |
| } | |
| # 日志配置 | |
| LOG_CONFIG = { | |
| "level": os.getenv("LOG_LEVEL", "INFO"), | |
| "format": "{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} | {message}", | |
| "rotation": "1 day", | |
| "retention": "7 days", | |
| "compression": "zip", | |
| } | |
| # API认证(可选) | |
| AUTH_CONFIG = { | |
| "enabled": os.getenv("API_KEY") is not None, | |
| "api_key": os.getenv("API_KEY", ""), | |
| } | |
| # 缓存配置 | |
| CACHE_CONFIG = { | |
| "enabled": True, | |
| "ttl": 3600, # 1小时 | |
| "backend": "redis" if os.getenv("USE_REDIS", "false").lower() == "true" else "memory", | |
| "redis": { | |
| "host": os.getenv("REDIS_HOST", "localhost"), | |
| "port": int(os.getenv("REDIS_PORT", 6379)), | |
| "password": os.getenv("REDIS_PASSWORD", None), | |
| "db": int(os.getenv("REDIS_DB", 0)), | |
| "socket_timeout": 5, | |
| "max_connections": 100, # 连接池优化 | |
| } | |
| } | |
| # 意图识别模型配置 | |
| INTENT_MODEL_CONFIG = { | |
| "model_name": os.getenv("INTENT_MODEL_NAME", "bert-base-chinese"), | |
| "model_path": os.getenv("INTENT_MODEL_PATH", str(BASE_DIR / "models" / "intent_bert")), | |
| "confidence_threshold": 0.85, | |
| } | |
| # 对话生成模型 API 配置 | |
| LLM_API_CONFIG = { | |
| # 启用 API 模式(true=使用API, false=使用本地模型) | |
| "enabled": os.getenv("LLM_API_ENABLED", "false").lower() == "true", | |
| # API 提供商: openai, anthropic, deepseek, moonshot, zhipu, dashscope, ollama, custom | |
| "provider": os.getenv("LLM_API_PROVIDER", "openai"), | |
| # API 密钥 | |
| "api_key": os.getenv("LLM_API_KEY", ""), | |
| # API 端点(用于自定义 API) | |
| "base_url": os.getenv("LLM_API_BASE_URL", ""), | |
| # 模型名称 | |
| "model": os.getenv("LLM_API_MODEL", "gpt-4o-mini"), | |
| # API 参数 | |
| "temperature": float(os.getenv("LLM_API_TEMPERATURE", "0.7")), | |
| "max_tokens": int(os.getenv("LLM_API_MAX_TOKENS", "512")), | |
| "top_p": float(os.getenv("LLM_API_TOP_P", "0.9")), | |
| # 超时设置(秒) | |
| "timeout": int(os.getenv("LLM_API_TIMEOUT", "30")), | |
| } | |