| """
|
| Cấu hình kết nối Qwen-72B API
|
| Hỗ trợ: Nvidia NIM, Together AI, hoặc bất kỳ OpenAI-compatible endpoint nào
|
| """
|
|
|
| import os
|
| from dataclasses import dataclass
|
| from pathlib import Path
|
|
|
| try:
|
| from dotenv import load_dotenv
|
| dotenv_path = Path(__file__).resolve().parent / '.env'
|
| if dotenv_path.exists():
|
| load_dotenv(dotenv_path=dotenv_path)
|
| print(f"✅ Loaded environment variables from {dotenv_path}")
|
| else:
|
| print(f"⚠️ .env file not found at {dotenv_path}. Please create it or export env vars.")
|
| except ImportError:
|
| print("⚠️ python-dotenv is not installed. .env file will not be loaded automatically.")
|
|
|
| @dataclass
|
| class QwenConfig:
|
|
|
|
|
|
|
| NVIDIA_API_KEY: str = os.getenv("NVIDIA_API_KEY", "")
|
| NVIDIA_BASE_URL: str = "https://integrate.api.nvidia.com/v1"
|
| NVIDIA_MODEL: str = "qwen/qwen2.5-72b-instruct"
|
|
|
|
|
| TOGETHER_API_KEY: str = os.getenv("TOGETHER_API_KEY", "")
|
| TOGETHER_BASE_URL: str = "https://api.together.xyz/v1"
|
| TOGETHER_MODEL: str = "Qwen/Qwen2.5-72B-Instruct-Turbo"
|
|
|
|
|
| OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "")
|
| OPENROUTER_BASE_URL: str = "https://openrouter.ai/api/v1"
|
| OPENROUTER_MODEL: str = "qwen/qwen-2.5-72b-instruct"
|
|
|
|
|
| ACTIVE_PROVIDER: str = os.getenv("QWEN_PROVIDER", "nvidia")
|
|
|
|
|
|
|
| TEMPERATURE: float = 0.1
|
|
|
| MAX_TOKENS: int = 2048
|
| TOP_P: float = 0.9
|
|
|
| STOP_SEQUENCES: list = None
|
|
|
| def __post_init__(self):
|
| if self.STOP_SEQUENCES is None:
|
| self.STOP_SEQUENCES = []
|
|
|
| @property
|
| def active_api_key(self) -> str:
|
| mapping = {
|
| "nvidia": self.NVIDIA_API_KEY,
|
| "together": self.TOGETHER_API_KEY,
|
| "openrouter": self.OPENROUTER_API_KEY,
|
| }
|
| return mapping[self.ACTIVE_PROVIDER]
|
|
|
| @property
|
| def active_base_url(self) -> str:
|
| mapping = {
|
| "nvidia": self.NVIDIA_BASE_URL,
|
| "together": self.TOGETHER_BASE_URL,
|
| "openrouter": self.OPENROUTER_BASE_URL,
|
| }
|
| return mapping[self.ACTIVE_PROVIDER]
|
|
|
| @property
|
| def active_model(self) -> str:
|
| mapping = {
|
| "nvidia": self.NVIDIA_MODEL,
|
| "together": self.TOGETHER_MODEL,
|
| "openrouter": self.OPENROUTER_MODEL,
|
| }
|
| return mapping[self.ACTIVE_PROVIDER]
|
|
|
|
|
|
|
| config = QwenConfig()
|
|
|