mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
@@ -61,12 +61,14 @@ class ScrapegraphScrapeTool(BaseTool):
|
|||||||
website_url: Optional[str] = None
|
website_url: Optional[str] = None
|
||||||
user_prompt: Optional[str] = None
|
user_prompt: Optional[str] = None
|
||||||
api_key: Optional[str] = None
|
api_key: Optional[str] = None
|
||||||
|
enable_logging: bool = False
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
website_url: Optional[str] = None,
|
website_url: Optional[str] = None,
|
||||||
user_prompt: Optional[str] = None,
|
user_prompt: Optional[str] = None,
|
||||||
api_key: Optional[str] = None,
|
api_key: Optional[str] = None,
|
||||||
|
enable_logging: bool = False,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
@@ -84,7 +86,8 @@ class ScrapegraphScrapeTool(BaseTool):
|
|||||||
if user_prompt is not None:
|
if user_prompt is not None:
|
||||||
self.user_prompt = user_prompt
|
self.user_prompt = user_prompt
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging only if enabled
|
||||||
|
if self.enable_logging:
|
||||||
sgai_logger.set_logging(level="INFO")
|
sgai_logger.set_logging(level="INFO")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -99,22 +102,6 @@ class ScrapegraphScrapeTool(BaseTool):
|
|||||||
"Invalid URL format. URL must include scheme (http/https) and domain"
|
"Invalid URL format. URL must include scheme (http/https) and domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
def _handle_api_response(self, response: dict) -> str:
|
|
||||||
"""Handle and validate API response"""
|
|
||||||
if not response:
|
|
||||||
raise RuntimeError("Empty response from Scrapegraph API")
|
|
||||||
|
|
||||||
if "error" in response:
|
|
||||||
error_msg = response.get("error", {}).get("message", "Unknown error")
|
|
||||||
if "rate limit" in error_msg.lower():
|
|
||||||
raise RateLimitError(f"Rate limit exceeded: {error_msg}")
|
|
||||||
raise RuntimeError(f"API error: {error_msg}")
|
|
||||||
|
|
||||||
if "result" not in response:
|
|
||||||
raise RuntimeError("Invalid response format from Scrapegraph API")
|
|
||||||
|
|
||||||
return response["result"]
|
|
||||||
|
|
||||||
def _run(
|
def _run(
|
||||||
self,
|
self,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
@@ -141,8 +128,7 @@ class ScrapegraphScrapeTool(BaseTool):
|
|||||||
user_prompt=user_prompt,
|
user_prompt=user_prompt,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Handle and validate the response
|
return response
|
||||||
return self._handle_api_response(response)
|
|
||||||
|
|
||||||
except RateLimitError:
|
except RateLimitError:
|
||||||
raise # Re-raise rate limit errors
|
raise # Re-raise rate limit errors
|
||||||
|
|||||||
Reference in New Issue
Block a user