69 lines
2.2 KiB
Python
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,
|
|
)
|