#!/usr/bin/env python3 """ OPIK utilities for Second Brain AI Assistant. """ import os from loguru import logger from second_brain_online.config import settings # Try to import opik, but handle import errors gracefully try: import opik from opik import OpikConfigurator OPIK_AVAILABLE = True except ImportError as e: logger.warning(f"OPIK not available: {e}") opik = None OpikConfigurator = None OPIK_AVAILABLE = False def configure() -> None: if not OPIK_AVAILABLE: logger.warning("OPIK is not available. Skipping OPIK configuration.") return if settings.COMET_API_KEY: try: client = OpikConfigurator(api_key=settings.COMET_API_KEY) default_workspace = client._get_default_workspace() except Exception: logger.warning( "Default workspace not found. Setting workspace to None and enabling interactive mode." ) default_workspace = None os.environ["OPIK_PROJECT_NAME"] = settings.COMET_PROJECT or "second_brain_course" opik.configure( api_key=settings.COMET_API_KEY, workspace=default_workspace, use_local=False, force=True, ) logger.info( f"Opik configured successfully using workspace '{default_workspace}'" ) else: logger.warning( "COMET_API_KEY is not set. Set it to enable prompt monitoring with Opik (powered by Comet ML)." ) def get_or_create_dataset(name: str, prompts: list[str]): if not OPIK_AVAILABLE: logger.warning("OPIK is not available. Cannot create dataset.") return None client = opik.Opik() try: dataset = client.get_dataset(name) if dataset is None: dataset = client.create_dataset(name, prompts) return dataset except Exception as e: logger.error(f"Error getting or creating dataset: {e}") return None