File size: 2,593 Bytes
2ba8e82 8fb64cb 2ba8e82 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
"""
Application settings and configuration.
"""
from pydantic_settings import BaseSettings
from pydantic import AnyHttpUrl, Field
from typing import List
import os
from dotenv import load_dotenv
# Load .env file explicitly
load_dotenv()
class Settings(BaseSettings):
"""Application settings loaded from environment variables."""
# ========== FastAPI Settings ==========
APP_NAME: str = "Memory Chatbot API"
APP_VERSION: str = "1.0.0"
APP_DESCRIPTION: str = "A chatbot with long-term memory capabilities"
# Server
HOST: str = "0.0.0.0"
PORT: int = 8000
DEBUG: bool = False
# CORS
CORS_ORIGINS: List[str] = ["*"]
CORS_CREDENTIALS: bool = True
CORS_METHODS: List[str] = ["*"]
CORS_HEADERS: List[str] = ["*"]
# API
API_V1_PREFIX: str = "/api/v1"
# ========== LLM Settings (from your config.py) ==========
# GROQ_API_KEY: str | None = Field(None, env="GROQ_API_KEY")
# OPENAI_API_KEY: str | None = Field(None, env="OPENAI_API_KEY")
# OPENAI_ENDPOINT: AnyHttpUrl | None = Field(None, env="OPENAI_ENDPOINT")
# LANGSMITH_API_KEY: str | None = Field(None, env="LANGSMITH_API_KEY")
sambanova_api_key: str | None = Field(None, env="SAMBANOVA_API_KEY")
nebius_api_key: str | None = Field(None, env="NEBIUS_API_KEY")
# LLM Configuration
MODEL_NAME: str = "llama-3.3-70b-versatile"
TEMPERATURE: float = 0.0
ENV: str = Field("development", env="ENV")
# Nebius LLM Configuration
NEBIUS_API_KEY: str | None = Field(None, env="NEBIUS_API_KEY")
NEBIUS_ENDPOINT: str | None = Field(None, env="NEBIUS_ENDPOINT")
# SambaNova LLM Configuration
SAMBANOVA_API_KEY: str | None = Field(None, env="SAMBANOVA_API_KEY")
SAMBANOVA_ENDPOINT: str | None = Field(None, env="SAMBANOVA_ENDPOINT")
# OpenAI LLM Configuration
OPENAI_API_KEY: str | None = Field(None, env="OPENAI_API_KEY")
# Gemini LLM Configuration
GEMINI_API_KEY: str | None = Field(None, env="GEMINI_API_KEY")
# ========== MCP Configuration ==========
# GitHub MCP
GITHUB_TOKEN: str | None = Field(None, env="GITHUB_TOKEN")
# PostgreSQL MCP
POSTGRES_CONNECTION_STRING: str | None = Field(None, env="POSTGRES_CONNECTION_STRING")
# Filesystem MCP
MCP_ALLOWED_DIRECTORIES: str = Field(".", env="MCP_ALLOWED_DIRECTORIES")
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
case_sensitive = False # Allow both GROQ_API_KEY and groq_api_key
# Create settings instance
settings = Settings() |