124 lines
4.8 KiB
Python
124 lines
4.8 KiB
Python
# -*- coding:utf-8 -*-
|
||
"""
|
||
File settings.py
|
||
Author silence
|
||
Date 2025/6/30 18:05
|
||
"""
|
||
|
||
from pydantic import Field
|
||
from pydantic_settings import BaseSettings
|
||
|
||
# 获取项目根目录(src/config/settings.py -> src/config -> src -> 项目根目录)
|
||
ENV_FILE = "/root/.env"
|
||
|
||
|
||
class AzureOpenAISettings(BaseSettings):
|
||
model: str = Field(default="gpt-4o", description="Azure OpenAI 模型名称")
|
||
endpoint: str = Field(description="Azure OpenAI 端点")
|
||
deployment: str = Field(default="gpt-4o", description="Azure OpenAI 部署名称")
|
||
api_version: str = Field(default="2024-02-15-preview", description="API 版本")
|
||
api_key: str = Field(description="Azure OpenAI API 密钥")
|
||
temperature: float = Field(default=0.7, description="生成温度")
|
||
max_tokens: int = Field(default=1000, description="最大令牌数")
|
||
|
||
class Config:
|
||
env_prefix = "AZURE_OPENAI_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
|
||
class DatabaseSettings(BaseSettings):
|
||
url: str = Field(default="", description="数据库连接URL")
|
||
host: str = Field(default="localhost", description="数据库主机")
|
||
port: int = Field(default=3306, description="数据库端口")
|
||
username: str = Field(default="root", description="数据库用户名")
|
||
password: str = Field(default="password", description="数据库密码")
|
||
database: str = Field(default="text2video", description="数据库名称")
|
||
|
||
class Config:
|
||
env_prefix = "DATABASE_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
@property
|
||
def database_url(self) -> str:
|
||
"""构建数据库连接URL"""
|
||
if self.url:
|
||
return self.url
|
||
return f"mysql+pymysql://{self.username}:{self.password}@{self.host}:{self.port}/{self.database}"
|
||
|
||
|
||
class COSSettings(BaseSettings):
|
||
bucket_name: str = Field(default="your-bucket-name", description="COS 存储桶名称")
|
||
secret_id: str = Field(default="your_secret_id", description="COS 密钥ID")
|
||
secret_key: str = Field(default="your_secret_key", description="COS 密钥")
|
||
region: str = Field(default="ap-shanghai", description="COS 区域")
|
||
|
||
class Config:
|
||
env_prefix = "COS_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
|
||
class LangfuseSettings(BaseSettings):
|
||
host: str = Field(default="https://cloud.langfuse.com", description="Langfuse 主机地址")
|
||
secret_key: str = Field(default="your_langfuse_secret_key", description="Langfuse 密钥")
|
||
public_key: str = Field(default="your_langfuse_public_key", description="Langfuse 公钥")
|
||
|
||
class Config:
|
||
env_prefix = "LANGFUSE_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
|
||
class MidjourneySettings(BaseSettings):
|
||
api_key: str = Field(default="your_midjourney_api_key", description="Midjourney API 密钥")
|
||
mode: str = Field(default="turbo", description="Midjourney 模式")
|
||
imagine_endpoint: str = Field(default="https://api.ttapi.io/midjourney/v1/imagine", description="Midjourney 生成端点")
|
||
fetch_endpoint: str = Field(default="https://api.ttapi.io/midjourney/v1/fetch", description="Midjourney 获取端点")
|
||
describe_endpoint: str = Field(default="https://api.ttapi.io/midjourney/v1/describe", description="Midjourney 描述端点")
|
||
|
||
class Config:
|
||
env_prefix = "MIDJOURNEY_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
@property
|
||
def base_url(self) -> str:
|
||
"""获取基础URL(用于兼容性)"""
|
||
return "https://api.ttapi.io/midjourney/v1"
|
||
|
||
|
||
class JimengSettings(BaseSettings):
|
||
api_key: str = Field(default="your_jimeng_api_key", description="极梦 API 密钥")
|
||
base_url: str = Field(default="https://ark.cn-beijing.volces.com/api/v3/contents/generations", description="极梦 API 基础URL")
|
||
|
||
class Config:
|
||
env_prefix = "JIMENG_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
class AWSSettings(BaseSettings):
|
||
access_key_id: str = Field(default="", description="AWS 访问密钥")
|
||
secret_access_key: str = Field(default="", description="AWS 密钥")
|
||
region: str = Field(default="ap-northeast-2", description="AWS 区域")
|
||
bucket_name: str = Field(default="", description="AWS 存储桶名称")
|
||
cnd_endpoint: str = Field(default="https://cdn.roasmax.cn", description="AWS 端点URL")
|
||
|
||
class Config:
|
||
env_prefix = "AWS_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
class MiniMaxSettings(BaseSettings):
|
||
api_key: str = Field(default="", description="MiniMax 访问密钥")
|
||
class Config:
|
||
env_prefix = "MINIMAX_"
|
||
env_file = str(ENV_FILE)
|
||
extra = "ignore"
|
||
|
||
midjourney_settings = MidjourneySettings()
|
||
cos_settings = COSSettings()
|
||
langfuse_settings = LangfuseSettings()
|
||
aws_settings = AWSSettings()
|
||
minimax_settings = MiniMaxSettings() |