Enhance error handling in AIEngine and update ResourceDebugOverlay
- Added error type handling in AIEngine for better error categorization during model configuration and execution. - Updated _handle_error method to accept and log error types. - Improved ResourceDebugOverlay to silently ignore 404 responses from the metrics endpoint, preventing unnecessary logging and retries. - Refactored authStore to utilize fetchAPI for automatic token handling and improved error logging without throwing exceptions.
This commit is contained in:
@@ -215,13 +215,15 @@ class AIEngine:
|
||||
except ValueError as e:
|
||||
# IntegrationSettings not configured or model missing
|
||||
error_msg = str(e)
|
||||
error_type = 'ConfigurationError'
|
||||
logger.error(f"[AIEngine] {error_msg}")
|
||||
return self._handle_error(error_msg, fn)
|
||||
return self._handle_error(error_msg, fn, error_type=error_type)
|
||||
except Exception as e:
|
||||
# Other unexpected errors
|
||||
error_msg = f"Failed to get model configuration: {str(e)}"
|
||||
error_type = type(e).__name__
|
||||
logger.error(f"[AIEngine] {error_msg}", exc_info=True)
|
||||
return self._handle_error(error_msg, fn)
|
||||
return self._handle_error(error_msg, fn, error_type=error_type)
|
||||
|
||||
# Debug logging: Show model configuration (console only, not in step tracker)
|
||||
logger.info(f"[AIEngine] Model Configuration for {function_name}:")
|
||||
@@ -373,18 +375,28 @@ class AIEngine:
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in AIEngine.execute for {function_name}: {str(e)}", exc_info=True)
|
||||
return self._handle_error(str(e), fn, exc_info=True)
|
||||
error_msg = str(e)
|
||||
error_type = type(e).__name__
|
||||
logger.error(f"Error in AIEngine.execute for {function_name}: {error_msg}", exc_info=True)
|
||||
return self._handle_error(error_msg, fn, exc_info=True, error_type=error_type)
|
||||
|
||||
def _handle_error(self, error: str, fn: BaseAIFunction = None, exc_info=False):
|
||||
def _handle_error(self, error: str, fn: BaseAIFunction = None, exc_info=False, error_type: str = None):
|
||||
"""Centralized error handling"""
|
||||
function_name = fn.get_name() if fn else 'unknown'
|
||||
|
||||
# Determine error type
|
||||
if error_type:
|
||||
final_error_type = error_type
|
||||
elif isinstance(error, Exception):
|
||||
final_error_type = type(error).__name__
|
||||
else:
|
||||
final_error_type = 'Error'
|
||||
|
||||
self.step_tracker.add_request_step("Error", "error", error, error=error)
|
||||
|
||||
error_meta = {
|
||||
'error': error,
|
||||
'error_type': type(error).__name__ if isinstance(error, Exception) else 'Error',
|
||||
'error_type': final_error_type,
|
||||
**self.step_tracker.get_meta()
|
||||
}
|
||||
self.tracker.error(error, meta=error_meta)
|
||||
@@ -399,7 +411,7 @@ class AIEngine:
|
||||
return {
|
||||
'success': False,
|
||||
'error': error,
|
||||
'error_type': type(error).__name__ if isinstance(error, Exception) else 'Error',
|
||||
'error_type': final_error_type,
|
||||
'request_steps': self.step_tracker.request_steps,
|
||||
'response_steps': self.step_tracker.response_steps
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user