
- Complete Mem0 OSS integration with hybrid datastore - PostgreSQL + pgvector for vector storage - Neo4j 5.18 for graph relationships - Google Gemini embeddings integration - Comprehensive monitoring with correlation IDs - Real-time statistics and performance tracking - Production-grade observability features - Clean repository with no exposed secrets
52 lines
No EOL
1.9 KiB
Python
52 lines
No EOL
1.9 KiB
Python
"""Configuration management for Mem0 Interface POC."""
|
|
|
|
import os
|
|
from typing import List, Optional
|
|
from pydantic import Field
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings loaded from environment variables."""
|
|
|
|
# API Configuration
|
|
openai_api_key: str = Field(..., env="OPENAI_API_KEY")
|
|
openai_base_url: str = Field(..., env="OPENAI_BASE_URL")
|
|
embedder_api_key: str = Field(..., env="EMBEDDER_API_KEY")
|
|
|
|
# Database Configuration
|
|
postgres_host: str = Field("localhost", env="POSTGRES_HOST")
|
|
postgres_port: int = Field(5432, env="POSTGRES_PORT")
|
|
postgres_db: str = Field("mem0_db", env="POSTGRES_DB")
|
|
postgres_user: str = Field("mem0_user", env="POSTGRES_USER")
|
|
postgres_password: str = Field("mem0_password", env="POSTGRES_PASSWORD")
|
|
|
|
# Neo4j Configuration
|
|
neo4j_uri: str = Field("bolt://localhost:7687", env="NEO4J_URI")
|
|
neo4j_username: str = Field("neo4j", env="NEO4J_USERNAME")
|
|
neo4j_password: str = Field("mem0_neo4j_password", env="NEO4J_PASSWORD")
|
|
|
|
# Application Configuration
|
|
log_level: str = Field("INFO", env="LOG_LEVEL")
|
|
cors_origins: str = Field("http://localhost:3000", env="CORS_ORIGINS")
|
|
|
|
# Model Configuration - Ultra-minimal (single model)
|
|
default_model: str = Field("claude-sonnet-4", env="DEFAULT_MODEL")
|
|
|
|
@property
|
|
def postgres_url(self) -> str:
|
|
"""Build PostgreSQL connection URL."""
|
|
return f"postgresql://{self.postgres_user}:{self.postgres_password}@{self.postgres_host}:{self.postgres_port}/{self.postgres_db}"
|
|
|
|
@property
|
|
def cors_origins_list(self) -> List[str]:
|
|
"""Convert CORS origins string to list."""
|
|
return [origin.strip() for origin in self.cors_origins.split(",")]
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
case_sensitive = False
|
|
|
|
|
|
# Global settings instance
|
|
settings = Settings() |