Files
arindam200--awesome-ai-apps/memory_agents/engineering_content_agent/config.py
T
2026-07-13 13:37:43 +08:00

69 lines
2.2 KiB
Python

"""Configuration for Developer Trend & DevRel Ideation Agent."""
from __future__ import annotations
import logging
import os
from dataclasses import dataclass
from pathlib import Path
from dotenv import load_dotenv
DEFAULT_MODEL = "zai-org/GLM-5.2"
DEFAULT_BASE_URL = "https://api.tokenfactory.nebius.com/v1/"
DEFAULT_ENGRAM_USER_ID = "engineering-content-agent-user"
@dataclass(frozen=True)
class Settings:
nebius_api_key: str
nebius_model: str = DEFAULT_MODEL
nebius_base_url: str = DEFAULT_BASE_URL
engram_api_key: str | None = None
engram_namespace: str = "default"
engram_user_id: str = DEFAULT_ENGRAM_USER_ID
engram_conversation_id: str | None = None
dev_api_key: str | None = None
log_level: str = "INFO"
@property
def has_persistent_memory(self) -> bool:
return bool(self.engram_api_key)
def load_project_env() -> None:
"""Load .env from the app directory without overriding active session keys."""
env_path = Path(__file__).resolve().parent / ".env"
load_dotenv(env_path, override=False)
def get_settings(require_nebius: bool = True) -> Settings:
load_project_env()
api_key = os.getenv("NEBIUS_API_KEY", "").strip()
if require_nebius and not api_key:
raise RuntimeError("Missing NEBIUS_API_KEY. Add it in the sidebar or .env file.")
log_level = os.getenv("LOG_LEVEL", "INFO").upper()
logging.basicConfig(level=getattr(logging, log_level, logging.INFO))
namespace = (
os.getenv("ENGRAM_NAMESPACE")
or os.getenv("ENGRAM_PROJECT_ID")
or "default"
)
return Settings(
nebius_api_key=api_key,
nebius_model=os.getenv("NEBIUS_MODEL", DEFAULT_MODEL).strip() or DEFAULT_MODEL,
nebius_base_url=os.getenv("NEBIUS_BASE_URL", DEFAULT_BASE_URL).strip()
or DEFAULT_BASE_URL,
engram_api_key=os.getenv("ENGRAM_API_KEY") or None,
engram_namespace=namespace,
engram_user_id=os.getenv("ENGRAM_USER_ID", DEFAULT_ENGRAM_USER_ID).strip()
or DEFAULT_ENGRAM_USER_ID,
engram_conversation_id=os.getenv("ENGRAM_CONVERSATION_ID") or None,
dev_api_key=os.getenv("DEV_API_KEY") or None,
log_level=log_level,
)