58 lines
2.0 KiB
Python
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()
|