config.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. """
  2. 企业微信回调服务配置文件
  3. 作者:开发工程师
  4. 日期:2025年01月
  5. """
  6. import os
  7. from dotenv import load_dotenv
  8. load_dotenv()
  9. class Config:
  10. """配置类"""
  11. # Langfuse配置
  12. LANGFUSE_ENABLE = os.getenv("LANGFUSE_ENABLE", "false").lower() == "true"
  13. LANGFUSE_SECRET_KEY = os.getenv('LANGFUSE_SECRET_KEY')
  14. LANGFUSE_PUBLIC_KEY = os.getenv('LANGFUSE_PUBLIC_KEY')
  15. LANGFUSE_BASE_URL = os.getenv('LANGFUSE_BASE_URL')
  16. # 企业微信基础配置
  17. CORP_ID = os.getenv('CORP_ID')
  18. TOKEN = os.getenv('TOKEN')
  19. ENCODING_AES_KEY = os.getenv('ENCODING_AES_KEY')
  20. # 应用配置
  21. APP_SECRET = os.getenv('APP_SECRET') # 应用密钥,用于主动调用API
  22. AGENT_ID = os.getenv('AGENT_ID') # 应用ID
  23. # 服务器配置
  24. HOST = os.getenv('HOST')
  25. PORT = int(os.getenv('PORT'))
  26. DEBUG = os.getenv('DEBUG', 'False').lower() == 'true'
  27. # 数据库配置
  28. DATABASE_PATH = os.getenv('DATABASE_PATH')
  29. # 客服配置
  30. KF_MAX_REPLY_LENGTH = 2048 # 客服回复最大长度
  31. # Milvus配置
  32. MILVUS_HOST = os.getenv('MILVUS_HOST')
  33. MILVUS_PORT = int(os.getenv('MILVUS_PORT'))
  34. MILVUS_USER = os.getenv('MILVUS_USER')
  35. MILVUS_PASSWORD = os.getenv('MILVUS_PASSWORD')
  36. MILVUS_DATABASE = os.getenv('MILVUS_DATABASE')
  37. MILVUS_COLLECTION_NAME = os.getenv('MILVUS_COLLECTION') # 默认集合名称
  38. MILVUS_INDEX_TYPE = os.getenv('MILVUS_INDEX_TYPE')
  39. MILVUS_VECTOR_DIM = int(os.getenv('MILVUS_VECTOR_DIM'))
  40. # LLM配置
  41. LLM_MODEL_NAME = os.getenv('LLM_MODEL_NAME')
  42. LLM_API_KEY = os.getenv('LLM_API_KEY')
  43. LLM_BASE_URL = os.getenv('LLM_BASE_URL')
  44. # LLM Embedding配置
  45. LLM_EMBEDDING_MODEL_NAME = os.getenv('LLM_EMBEDDING_MODEL_NAME')
  46. LLM_EMBEDDING_API_KEY = os.getenv('LLM_EMBEDDING_API_KEY')
  47. LLM_EMBEDDING_BASE_URL = os.getenv('LLM_EMBEDDING_BASE_URL')
  48. # Rerank服务配置
  49. RERANK_PROVIDER = os.getenv('RERANK_PROVIDER') # dashscope 或 siliconflow
  50. RERANK_API_KEY = os.getenv('RERANK_API_KEY')
  51. RERANK_MODEL_NAME = os.getenv('RERANK_MODEL_NAME') # 百炼: gte-rerank-v2, 硅基: BAAI/bge-reranker-v2-m3
  52. RERANK_ENDPOINT = os.getenv('RERANK_ENDPOINT') # 自定义API端点
  53. @classmethod
  54. def validate_config(cls):
  55. """验证配置的有效性"""
  56. errors = []
  57. if not cls.TOKEN:
  58. errors.append("缺少TOKEN配置")
  59. if not cls.ENCODING_AES_KEY:
  60. errors.append("缺少ENCODING_AES_KEY配置")
  61. if not cls.CORP_ID:
  62. errors.append("缺少CORP_ID配置")
  63. return errors
  64. @classmethod
  65. def get_config_info(cls):
  66. """获取配置信息摘要"""
  67. return {
  68. 'corp_id': cls.CORP_ID,
  69. 'token_configured': bool(cls.TOKEN),
  70. 'encoding_key_configured': bool(cls.ENCODING_AES_KEY),
  71. 'app_secret_configured': bool(cls.APP_SECRET),
  72. 'agent_id_configured': bool(cls.AGENT_ID),
  73. 'database_path': cls.DATABASE_PATH,
  74. 'host': cls.HOST,
  75. 'port': cls.PORT,
  76. 'debug': cls.DEBUG,
  77. 'host_whitelist_enabled': cls.ENABLE_HOST_WHITELIST,
  78. 'allowed_hosts': cls.ALLOWED_HOSTS
  79. }
  80. # 功能配置
  81. class FeatureConfig:
  82. """功能配置"""
  83. # 支持的消息类型
  84. SUPPORTED_MESSAGE_TYPES = [
  85. 'text', 'image', 'voice', 'video', 'file', 'location', 'link'
  86. ]
  87. # 支持的事件类型
  88. SUPPORTED_EVENT_TYPES = [
  89. 'subscribe', 'unsubscribe', 'LOCATION', 'CLICK'
  90. ]