Make SIF fail fast and add low-cost remote LLM fallback
This commit is contained in:
@@ -54,6 +54,7 @@ class TxtaiIntelligenceService:
|
||||
self.cache_manager = semantic_cache_manager if enable_caching else None
|
||||
self._backend = "faiss" # Default backend
|
||||
self._disable_ann_queries = False # Set when FAISS nprobe incompatibility is detected
|
||||
self.fail_fast = str(os.getenv("SIF_FAIL_FAST", "true")).lower() in {"1", "true", "yes", "on"}
|
||||
|
||||
# Mark as initialized for singleton pattern
|
||||
self._singleton_initialized = True
|
||||
@@ -226,6 +227,7 @@ class TxtaiIntelligenceService:
|
||||
Args:
|
||||
items: List of (id, text, metadata) tuples.
|
||||
"""
|
||||
<<<<<<< HEAD
|
||||
# Check if already initialized
|
||||
if not self._initialized and not self._initialization_in_progress:
|
||||
# Trigger initialization in background (non-blocking)
|
||||
@@ -241,6 +243,14 @@ class TxtaiIntelligenceService:
|
||||
|
||||
if not self.embeddings:
|
||||
logger.error(f"Cannot index content - embeddings not available for user {self.user_id}")
|
||||
=======
|
||||
self._ensure_initialized()
|
||||
if not self._initialized or not self.embeddings:
|
||||
message = f"Cannot index content - service not initialized for user {self.user_id}"
|
||||
logger.error(message)
|
||||
if self.fail_fast:
|
||||
raise RuntimeError(message)
|
||||
>>>>>>> 8b0547c (Make SIF fail fast and add low-cost remote LLM fallback)
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -287,7 +297,10 @@ class TxtaiIntelligenceService:
|
||||
"""Perform semantic search with intelligent caching."""
|
||||
self._ensure_initialized()
|
||||
if not self._initialized or not self.embeddings:
|
||||
logger.error(f"Cannot perform search - service not initialized for user {self.user_id}")
|
||||
message = f"Cannot perform search - service not initialized for user {self.user_id}"
|
||||
logger.error(message)
|
||||
if self.fail_fast:
|
||||
raise RuntimeError(message)
|
||||
return []
|
||||
|
||||
try:
|
||||
@@ -321,6 +334,8 @@ class TxtaiIntelligenceService:
|
||||
return results
|
||||
except Exception as e:
|
||||
logger.error(f"Search failed for user {self.user_id}: {e}")
|
||||
if self.fail_fast:
|
||||
raise
|
||||
logger.error(f"Query: '{query}'")
|
||||
logger.error(f"Full traceback: {traceback.format_exc()}")
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user