ml / core /config.py
devin15's picture
Upload 31 files
3979178 verified
import os
import platform
import uuid
from typing import List, Dict
import httpx
from dotenv import load_dotenv
from pydantic_settings import BaseSettings
load_dotenv()
class Settings(BaseSettings):
TIMEZONE: str = "Asia/Shanghai"
READY_REFRESH_TOKEN: str = os.getenv('READY_REFRESH_TOKEN', '')
READY_TOKEN: str = os.getenv('READY_TOKEN', '')
APP_SECRET: str = os.getenv('APP_SECRET', '')
TOKEN: str = os.getenv('TOKEN', '')
PROJECT_NAME: str = os.getenv('PROJECT_NAME', 'FastAPI')
DESCRIPTION: str = os.getenv('DESCRIPTION', 'FastAPI template')
FIREBASE_API_KEY: str = os.getenv('FIREBASE_API_KEY', '')
REFRESH_TOKEN: str = os.getenv('REFRESH_TOKEN', '')
AUTHORIZATION_TOKEN: str = os.getenv('AUTHORIZATION_TOKEN', '')
ALLOWED_MODELS: List[Dict[str, str]] = [
{"id": "o1-mini", "name": "o1-mini[merlin]"},
{"id": "claude-3.5-sonnet", "name": "Claude 3.5 Sonnet[merlin]"},
{"id": "gpt-4o-64k-output", "name": "GPT 4o (Longer Output)[merlin]"},
{"id": "gemini-1.5-pro", "name": "Gemini 1.5 Pro[merlin]"},
{"id": "gpt-4o", "name": "GPT 4o[merlin]"},
{"id": "meta-llama/Meta-Llama-3.1-405B-Instruct", "name": "Llama 3.1 405B[merlin]"},
{"id": "claude-3.5-haiku", "name": "Claude 3.5 Haiku[merlin]"},
{"id": "claude-3-haiku", "name": "Claude 3 Haiku[merlin]"},
{"id": "gemini-1.5-flash", "name": "Gemini 1.5 Flash[merlin]"},
{"id": "gpt-4o-mini", "name": "GPT 4o mini[merlin]"},
{"id": "deepseek-chat", "name": "DeepSeek V3[merlin]"},
{"id": "o1", "name": "O1[merlin]"},
{"id": "o1-preview", "name": "O1 Preview[merlin]"},
{"id": "mistral-large-latest", "name": "Mistral Large[merlin]"},
{"id": "claude-3-opus", "name": "Claude 3 Opus[merlin]"},
{"id": "claude-3-sonnet", "name": "Claude 3 Sonnet[merlin]"},
{"id": "mistralai/Mixtral-8x7B-Instruct-v0.1", "name": "Mixtral[merlin]"},
{"id": "gpt-3.5-turbo", "name": "GPT 3.5[merlin]"},
]
MODEL_MAPPING: Dict[str, str] = {
"gpt-4o": "gpt-4o",
"o1-preview": "o1-preview",
"claude-3-5-sonnet": "claude-3-5-sonnet",
"o1-mini": "o1-mini",
"gemini-1.5-pro": "gemini-1.5-pro",
"gemini-2.0-flash": "gemini-2.0-flash",
}
HEADERS: Dict[str, str] = {
"authorization": f"Bearer {os.getenv('TOKEN', '')}",
"accept": "text/event-stream, text/event-stream",
"content-type": "application/json",
"x-merlin-version": "web-merlin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"origin": "https://www.getmerlin.in",
"referer": "https://www.getmerlin.in/"
}
class Config:
env_file = '.env'
case_sensitive = True
_settings = None
def get_settings():
global _settings
if _settings is None:
_settings = Settings()
return _settings