NarratoAI/app/services/llm/exceptions.py
linyq 7309208282 feat(llm): 重构解说文案生成和视觉分析器,支持新的LLM服务架构
更新generate_narration_script.py、base.py和generate_short_summary.py文件,重构解说文案生成和视觉分析器的实现,优先使用新的LLM服务架构。添加回退机制以确保兼容性,增强系统的稳定性和用户体验。
2025-07-07 16:33:26 +08:00

119 lines
3.5 KiB
Python

"""
大模型服务异常类定义
定义了大模型服务中可能出现的各种异常类型,
提供统一的错误处理机制
"""
from typing import Optional, Dict, Any
class LLMServiceError(Exception):
"""大模型服务基础异常类"""
def __init__(self, message: str, error_code: Optional[str] = None, details: Optional[Dict[str, Any]] = None):
super().__init__(message)
self.message = message
self.error_code = error_code
self.details = details or {}
def __str__(self):
if self.error_code:
return f"[{self.error_code}] {self.message}"
return self.message
class ProviderNotFoundError(LLMServiceError):
"""供应商未找到异常"""
def __init__(self, provider_name: str):
super().__init__(
message=f"未找到大模型供应商: {provider_name}",
error_code="PROVIDER_NOT_FOUND",
details={"provider_name": provider_name}
)
class ConfigurationError(LLMServiceError):
"""配置错误异常"""
def __init__(self, message: str, config_key: Optional[str] = None):
super().__init__(
message=f"配置错误: {message}",
error_code="CONFIGURATION_ERROR",
details={"config_key": config_key} if config_key else {}
)
class APICallError(LLMServiceError):
"""API调用错误异常"""
def __init__(self, message: str, status_code: Optional[int] = None, response_text: Optional[str] = None):
super().__init__(
message=f"API调用失败: {message}",
error_code="API_CALL_ERROR",
details={
"status_code": status_code,
"response_text": response_text
}
)
class ValidationError(LLMServiceError):
"""输出验证错误异常"""
def __init__(self, message: str, validation_type: Optional[str] = None, invalid_data: Optional[Any] = None):
super().__init__(
message=f"输出验证失败: {message}",
error_code="VALIDATION_ERROR",
details={
"validation_type": validation_type,
"invalid_data": str(invalid_data) if invalid_data else None
}
)
class ModelNotSupportedError(LLMServiceError):
"""模型不支持异常"""
def __init__(self, model_name: str, provider_name: str):
super().__init__(
message=f"供应商 {provider_name} 不支持模型 {model_name}",
error_code="MODEL_NOT_SUPPORTED",
details={
"model_name": model_name,
"provider_name": provider_name
}
)
class RateLimitError(LLMServiceError):
"""API速率限制异常"""
def __init__(self, message: str = "API调用频率超限", retry_after: Optional[int] = None):
super().__init__(
message=message,
error_code="RATE_LIMIT_ERROR",
details={"retry_after": retry_after}
)
class AuthenticationError(LLMServiceError):
"""认证错误异常"""
def __init__(self, message: str = "API密钥无效或权限不足"):
super().__init__(
message=message,
error_code="AUTHENTICATION_ERROR"
)
class ContentFilterError(LLMServiceError):
"""内容过滤异常"""
def __init__(self, message: str = "内容被安全过滤器阻止"):
super().__init__(
message=message,
error_code="CONTENT_FILTER_ERROR"
)