| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- """
- 企业微信回调服务配置文件
- 作者:开发工程师
- 日期:2025年01月
- """
- import os
- from dotenv import load_dotenv
- load_dotenv()
- class Config:
- """配置类"""
-
- # Langfuse配置
- LANGFUSE_ENABLE = os.getenv("LANGFUSE_ENABLE", "false").lower() == "true"
- LANGFUSE_SECRET_KEY = os.getenv('LANGFUSE_SECRET_KEY')
- LANGFUSE_PUBLIC_KEY = os.getenv('LANGFUSE_PUBLIC_KEY')
- LANGFUSE_BASE_URL = os.getenv('LANGFUSE_BASE_URL')
-
- # 企业微信基础配置
- CORP_ID = os.getenv('CORP_ID')
- TOKEN = os.getenv('TOKEN')
- ENCODING_AES_KEY = os.getenv('ENCODING_AES_KEY')
-
- # 应用配置
- APP_SECRET = os.getenv('APP_SECRET') # 应用密钥,用于主动调用API
- AGENT_ID = os.getenv('AGENT_ID') # 应用ID
-
-
- # 服务器配置
- HOST = os.getenv('HOST')
- PORT = int(os.getenv('PORT'))
- DEBUG = os.getenv('DEBUG', 'False').lower() == 'true'
-
- # 数据库配置
- DATABASE_PATH = os.getenv('DATABASE_PATH')
-
- # 客服配置
- KF_MAX_REPLY_LENGTH = 2048 # 客服回复最大长度
- # Milvus配置
- MILVUS_HOST = os.getenv('MILVUS_HOST')
- MILVUS_PORT = int(os.getenv('MILVUS_PORT'))
- MILVUS_USER = os.getenv('MILVUS_USER')
- MILVUS_PASSWORD = os.getenv('MILVUS_PASSWORD')
- MILVUS_DATABASE = os.getenv('MILVUS_DATABASE')
- MILVUS_COLLECTION_NAME = os.getenv('MILVUS_COLLECTION') # 默认集合名称
- MILVUS_INDEX_TYPE = os.getenv('MILVUS_INDEX_TYPE')
- MILVUS_VECTOR_DIM = int(os.getenv('MILVUS_VECTOR_DIM'))
- # LLM配置
- LLM_MODEL_NAME = os.getenv('LLM_MODEL_NAME')
- LLM_API_KEY = os.getenv('LLM_API_KEY')
- LLM_BASE_URL = os.getenv('LLM_BASE_URL')
- # LLM Embedding配置
- LLM_EMBEDDING_MODEL_NAME = os.getenv('LLM_EMBEDDING_MODEL_NAME')
- LLM_EMBEDDING_API_KEY = os.getenv('LLM_EMBEDDING_API_KEY')
- LLM_EMBEDDING_BASE_URL = os.getenv('LLM_EMBEDDING_BASE_URL')
- # Rerank服务配置
- RERANK_PROVIDER = os.getenv('RERANK_PROVIDER') # dashscope 或 siliconflow
- RERANK_API_KEY = os.getenv('RERANK_API_KEY')
- RERANK_MODEL_NAME = os.getenv('RERANK_MODEL_NAME') # 百炼: gte-rerank-v2, 硅基: BAAI/bge-reranker-v2-m3
- RERANK_ENDPOINT = os.getenv('RERANK_ENDPOINT') # 自定义API端点
- @classmethod
- def validate_config(cls):
- """验证配置的有效性"""
- errors = []
-
- if not cls.TOKEN:
- errors.append("缺少TOKEN配置")
-
- if not cls.ENCODING_AES_KEY:
- errors.append("缺少ENCODING_AES_KEY配置")
-
- if not cls.CORP_ID:
- errors.append("缺少CORP_ID配置")
-
- return errors
-
- @classmethod
- def get_config_info(cls):
- """获取配置信息摘要"""
- return {
- 'corp_id': cls.CORP_ID,
- 'token_configured': bool(cls.TOKEN),
- 'encoding_key_configured': bool(cls.ENCODING_AES_KEY),
- 'app_secret_configured': bool(cls.APP_SECRET),
- 'agent_id_configured': bool(cls.AGENT_ID),
- 'database_path': cls.DATABASE_PATH,
- 'host': cls.HOST,
- 'port': cls.PORT,
- 'debug': cls.DEBUG,
- 'host_whitelist_enabled': cls.ENABLE_HOST_WHITELIST,
- 'allowed_hosts': cls.ALLOWED_HOSTS
- }
- # 功能配置
- class FeatureConfig:
- """功能配置"""
-
- # 支持的消息类型
- SUPPORTED_MESSAGE_TYPES = [
- 'text', 'image', 'voice', 'video', 'file', 'location', 'link'
- ]
-
- # 支持的事件类型
- SUPPORTED_EVENT_TYPES = [
- 'subscribe', 'unsubscribe', 'LOCATION', 'CLICK'
- ]
-
|