config.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from pydantic_settings import BaseSettings
  2. from typing import List
  3. class Settings(BaseSettings):
  4. app_name: str = "ai-flow"
  5. # 日志级别
  6. log_level: str = "INFO"
  7. # Redis
  8. redis_host: str
  9. redis_port: int
  10. redis_password: str
  11. redis_db: int = 0
  12. redis_timeout: int = 2000
  13. # 存储后端: "redis" 或 "local"
  14. store_backend: str = "redis"
  15. # Redis Pub/Sub
  16. redis_publish_enabled: bool = True
  17. redis_publish_channel: str = "WORKFLOW_TASK"
  18. # 工作流线程池
  19. executor_pool_size: int = 8
  20. # 模板缓存
  21. template_cache_enabled: bool = True
  22. template_cache_dir: str = "data/templates"
  23. template_download_timeout: int = 30000
  24. template_download_max_size: int = 104857600
  25. # API Key 认证
  26. api_auth_enabled: bool = False
  27. api_auth_keys: List[str] = []
  28. api_auth_header_name: str = "Authorization"
  29. api_auth_prefix: str = "Bearer"
  30. api_auth_error_message: str = "Invalid API Key"
  31. # 本地存储
  32. task_store_data_dir: str = "data/tasks"
  33. # 阿里云 OSS
  34. aliyun_endpoint: str
  35. aliyun_access_key_id: str
  36. aliyun_access_key_secret: str
  37. aliyun_bucket_name: str
  38. # Google Cloud Storage
  39. gcs_project_id: str
  40. gcs_bucket_name: str
  41. gcs_credentials_json: str = ""
  42. gcs_credentials_file: str = ""
  43. # Gemini API
  44. gemini_api_key: str
  45. gemini_base_url: str
  46. gemini_nano_banana_model: str
  47. gemini_veo3_model: str
  48. # Kontext (BFL) API
  49. kontext_api_key: str
  50. kontext_pro_url: str
  51. kontext_max_url: str
  52. # Keling API
  53. keling_app_key: str
  54. keling_app_secret: str
  55. keling_image2video_url: str
  56. keling_video2effect_url: str
  57. # SeedDance / SeedDream API
  58. seed_api_key: str
  59. seedance_video_url: str
  60. seedream_image_url: str
  61. # 资源路径
  62. resources_path: str = "resources"
  63. model_config = {"env_prefix": "AI_FLOW_", "env_file": ".env"}
  64. settings = Settings()