def to_dial_exception()

in aidial_adapter_vertexai/dial_api/exceptions.py [0:0]


def to_dial_exception(e: Exception) -> DialException:
    if isinstance(e, GoogleAuthError):
        return DialException(
            status_code=401,
            type="invalid_request_error",
            message=f"Invalid Authentication: {str(e)}",
            code="invalid_api_key",
        )

    if isinstance(e, PermissionDenied):
        return DialException(
            status_code=403,
            type="invalid_request_error",
            message=f"Permission denied: {str(e)}",
            code="permission_denied",
        )

    if isinstance(e, InvalidArgument):
        # Imagen content filtering message
        content_filter_msg = (
            "The response is blocked, as it may violate our policies."
        )
        if content_filter_msg in str(e):
            return InvalidRequestError(
                message=content_filter_msg,
                code="content_filter",
                param="prompt",
            )

        return InvalidRequestError(
            f"Invalid argument: {str(e)}",
        )

    if isinstance(e, (GoogleAPICallError, APIError)):
        code = e.code or 500
        return DialException(
            status_code=code,
            type=(
                "invalid_request_error"
                if code < 500
                else "internal_server_error"
            ),
            message=str(e),
        )

    if isinstance(e, ValidationError):
        return e.to_dial_exception()

    if isinstance(e, UserError):
        return e.to_dial_exception()

    if isinstance(e, DialException):
        return e

    return InternalServerError(str(e))