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()