mirror of
https://github.com/SMNETSTUDIO/WeChat-AI.git
synced 2026-08-12 22:23:42 +08:00
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
"""Runtime configuration for wechat-ai-tools (HF / Docker)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from functools import lru_cache
|
|
|
|
from pydantic import Field
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
populate_by_name=True,
|
|
)
|
|
|
|
tools_api_key: str = Field(default="", alias="TOOLS_API_KEY")
|
|
|
|
upstream_llm_base_url: str = Field(
|
|
default="https://api.openai.com/v1",
|
|
alias="UPSTREAM_LLM_BASE_URL",
|
|
)
|
|
upstream_llm_api_key: str = Field(default="", alias="UPSTREAM_LLM_API_KEY")
|
|
upstream_llm_model: str = Field(default="gpt-4o-mini", alias="UPSTREAM_LLM_MODEL")
|
|
|
|
allow_request_upstream: bool = Field(default=True, alias="ALLOW_REQUEST_UPSTREAM")
|
|
upstream_deny_private: bool = Field(default=True, alias="UPSTREAM_DENY_PRIVATE")
|
|
upstream_timeout_ms: int = Field(default=60_000, alias="UPSTREAM_TIMEOUT_MS")
|
|
max_body_bytes: int = Field(default=1_048_576, alias="MAX_BODY_BYTES")
|
|
|
|
search_provider: str = Field(default="ddg", alias="SEARCH_PROVIDER")
|
|
searxng_url: str = Field(default="", alias="SEARXNG_URL")
|
|
tavily_api_key: str = Field(default="", alias="TAVILY_API_KEY")
|
|
search_timeout_ms: int = Field(default=15_000, alias="SEARCH_TIMEOUT_MS")
|
|
search_max_results: int = Field(default=8, alias="SEARCH_MAX_RESULTS")
|
|
|
|
host: str = Field(default="0.0.0.0", alias="HOST")
|
|
port: int = Field(default=7860, alias="PORT")
|
|
log_level: str = Field(default="info", alias="LOG_LEVEL")
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> Settings:
|
|
return Settings()
|
|
|
|
|
|
def env_bool(name: str, default: bool = False) -> bool:
|
|
raw = os.environ.get(name)
|
|
if raw is None:
|
|
return default
|
|
return raw.strip().lower() in {"1", "true", "yes", "on"}
|