Files
browser-use__browser-use/browser_use/llm/exceptions.py
2026-07-10 00:47:32 -07:00

51 lines
1.2 KiB
Python

class ModelError(Exception):
pass
class ModelProviderError(ModelError):
"""Exception raised when a model provider returns an error."""
def __init__(
self,
message: str,
status_code: int = 502,
model: str | None = None,
):
super().__init__(message)
self.message = message
self.status_code = status_code
self.model = model
class ModelRateLimitError(ModelProviderError):
"""Exception raised when a model provider returns a rate limit error."""
def __init__(
self,
message: str,
status_code: int = 429,
model: str | None = None,
):
super().__init__(message, status_code, model)
class ModelOutputTruncatedError(ModelProviderError):
"""Output was cut off at an output-token limit (finish_reason='length' / stop_reason='max_tokens').
Status 400 keeps it out of same-provider retry loops; the agent's fallback switch treats it as recoverable.
"""
def __init__(
self,
message: str,
model: str | None = None,
):
super().__init__(message, status_code=400, model=model)
class UnsupportedModelFeatureError(ModelProviderError):
"""The selected model or adapter cannot provide a required feature."""
def __init__(self, message: str, model: str | None = None):
super().__init__(message=message, status_code=400, model=model)