|
|
|
|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
class Config: |
|
|
"""Configuration management for API keys and settings""" |
|
|
|
|
|
|
|
|
MISTRAL_API_KEY = os.getenv("MISTRAL_API_KEY", "") |
|
|
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "") |
|
|
|
|
|
|
|
|
CHROMA_DB_PATH = os.getenv("CHROMA_DB_PATH", "./chroma_db") |
|
|
CHROMA_COLLECTION_NAME = "knowledge_base" |
|
|
|
|
|
|
|
|
MCP_SERVER_NAME = "intelligent-content-organizer" |
|
|
MCP_SERVER_VERSION = "1.0.0" |
|
|
MCP_SERVER_DESCRIPTION = "AI-powered knowledge management with automatic tagging and semantic search" |
|
|
|
|
|
|
|
|
MAX_FILE_SIZE_MB = 50 |
|
|
SUPPORTED_FILE_TYPES = [ |
|
|
".pdf", ".txt", ".docx", ".doc", ".html", ".htm", |
|
|
".md", ".csv", ".json", ".xml", ".rtf" |
|
|
] |
|
|
|
|
|
|
|
|
MISTRAL_MODEL = "mistral-small-latest" |
|
|
CLAUDE_MODEL = "claude-3-haiku-20240307" |
|
|
EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2" |
|
|
|
|
|
|
|
|
USE_MISTRAL_FOR_TAGS = bool(MISTRAL_API_KEY) |
|
|
USE_CLAUDE_FOR_SUMMARY = bool(ANTHROPIC_API_KEY) |
|
|
|
|
|
|
|
|
ENABLE_FREE_FALLBACKS = True |
|
|
|
|
|
@classmethod |
|
|
def validate(cls): |
|
|
"""Validate configuration - now more flexible""" |
|
|
warnings = [] |
|
|
|
|
|
if not cls.MISTRAL_API_KEY: |
|
|
warnings.append("MISTRAL_API_KEY not set - will use free tag generation") |
|
|
|
|
|
if not cls.ANTHROPIC_API_KEY: |
|
|
warnings.append("ANTHROPIC_API_KEY not set - will use free summarization") |
|
|
|
|
|
if warnings: |
|
|
print("⚠️ Configuration warnings:") |
|
|
for warning in warnings: |
|
|
print(f" - {warning}") |
|
|
print("\n✅ The app will still work using free alternatives!") |
|
|
else: |
|
|
print("✅ All API keys configured") |
|
|
|
|
|
return True |
|
|
|
|
|
@classmethod |
|
|
def get_status(cls): |
|
|
"""Get configuration status for display""" |
|
|
return { |
|
|
"mistral_configured": bool(cls.MISTRAL_API_KEY), |
|
|
"anthropic_configured": bool(cls.ANTHROPIC_API_KEY), |
|
|
"free_fallbacks_enabled": cls.ENABLE_FREE_FALLBACKS, |
|
|
"supported_formats": cls.SUPPORTED_FILE_TYPES, |
|
|
"embedding_model": cls.EMBEDDING_MODEL |
|
|
} |