Files
20260327-c863ce53/app/config.py
2026-04-25 19:25:22 +08:00

58 lines
2.0 KiB
Python

"""Application configuration — multi-model pool by domain."""
from pathlib import Path
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
# --- Model Pool ---
# Global analysis (English-native): strongest global reasoning
llm_global: str = "openai/Claude-3.5-Sonnet"
# China domestic (Chinese-native): deepest Chinese market knowledge
llm_china: str = "openai/DeepSeek-R1"
# Synthesis & review: strongest reasoning for cross-domain work
llm_reasoning: str = "openai/Claude-3.5-Sonnet"
# Data & fast tasks: cost-effective structured output
llm_fast: str = "openai/Gemini-2.0-Flash"
# Translation: high-quality bidirectional EN↔ZH
llm_translation: str = "openai/Claude-3.5-Sonnet"
# Fallback default (if domain not specified)
llm_model: str = "openai/Claude-3.5-Sonnet"
# API config (Poe as unified gateway)
llm_api_key: str = ""
llm_api_base: str = "https://api.poe.com/bot/"
# Server
host: str = "0.0.0.0"
port: int = 4200
# Paths
base_dir: Path = Path(__file__).resolve().parent.parent
templates_dir: Path = base_dir / "templates"
output_dir: Path = base_dir / "output"
model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
def model_for_domain(self, domain: str) -> str:
"""Get the best model for a content domain.
Domains:
global — international markets, global competition, tech trends
china — Chinese market, domestic policy, local competition
reasoning — synthesis, review, strategic recommendations
fast — data processing, chart generation, structured output
translation — high-quality EN↔ZH translation
"""
return {
"global": self.llm_global,
"china": self.llm_china,
"reasoning": self.llm_reasoning,
"fast": self.llm_fast,
"translation": self.llm_translation,
}.get(domain, self.llm_model)
settings = Settings()