Skip to main content
Glama
errors.py4.98 kB
""" Seedream MCP工具 - 错误处理模块 定义各种异常类型和错误处理函数。 """ from typing import Optional, Dict, Any class SeedreamMCPError(Exception): """Seedream MCP工具基础异常类""" 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 to_dict(self) -> Dict[str, Any]: """转换为字典格式""" return { "error": self.__class__.__name__, "message": self.message, "error_code": self.error_code, "details": self.details, } class SeedreamConfigError(SeedreamMCPError): """配置相关错误""" pass class SeedreamAPIError(SeedreamMCPError): """API调用相关错误""" def __init__( self, message: str, status_code: Optional[int] = None, response_data: Optional[Dict[str, Any]] = None, ): super().__init__(message) self.status_code = status_code self.response_data = response_data or {} def to_dict(self) -> Dict[str, Any]: """转换为字典格式""" result = super().to_dict() result.update( { "status_code": self.status_code, "response_data": self.response_data, } ) return result class SeedreamValidationError(SeedreamMCPError): """参数验证错误""" def __init__(self, message: str, field: Optional[str] = None, value: Optional[Any] = None): super().__init__(message) self.field = field self.value = value def to_dict(self) -> Dict[str, Any]: """转换为字典格式""" result = super().to_dict() result.update( { "field": self.field, "value": self.value, } ) return result class SeedreamTimeoutError(SeedreamMCPError): """超时错误""" pass class SeedreamNetworkError(SeedreamMCPError): """网络连接错误""" pass def handle_api_error(response_status: int, response_data: Dict[str, Any]) -> SeedreamAPIError: """处理API错误响应 Args: response_status: HTTP状态码 response_data: 响应数据 Returns: SeedreamAPIError实例 """ error_message = "API调用失败" # 根据状态码提供更具体的错误信息 if response_status == 400: error_message = "请求参数错误" elif response_status == 401: error_message = "API密钥无效或已过期" elif response_status == 403: error_message = "访问被拒绝,请检查API权限" elif response_status == 404: error_message = "API端点不存在" elif response_status == 429: error_message = "请求频率超限,请稍后重试" elif response_status >= 500: error_message = "服务器内部错误" # 尝试从响应中提取更详细的错误信息 if isinstance(response_data, dict): if "error" in response_data: error_detail = response_data["error"] if isinstance(error_detail, dict) and "message" in error_detail: error_message = f"{error_message}: {error_detail['message']}" elif isinstance(error_detail, str): error_message = f"{error_message}: {error_detail}" elif "message" in response_data: error_message = f"{error_message}: {response_data['message']}" return SeedreamAPIError( message=error_message, status_code=response_status, response_data=response_data ) def format_error_for_user(error: Exception) -> str: """格式化错误信息供用户查看 Args: error: 异常实例 Returns: 格式化的错误信息字符串 """ if isinstance(error, SeedreamConfigError): return f"配置错误: {error.message}" elif isinstance(error, SeedreamAPIError): if error.status_code == 401: return f"认证失败: {error.message}\n请检查您的API密钥是否正确设置。" elif error.status_code == 429: return f"请求频率超限: {error.message}\n请稍后重试。" else: return f"API调用失败: {error.message}" elif isinstance(error, SeedreamValidationError): return f"参数验证失败: {error.message}" elif isinstance(error, SeedreamTimeoutError): return f"请求超时: {error.message}\n请检查网络连接或稍后重试。" elif isinstance(error, SeedreamNetworkError): return f"网络连接错误: {error.message}\n请检查网络连接。" elif isinstance(error, SeedreamMCPError): return f"操作失败: {error.message}" else: return f"未知错误: {str(error)}"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tengmmvp/Seedream_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server