Merge pull request #177 from VinciGit00/main

fix: scrapegraph tool
This commit is contained in:
João Moura
2025-01-19 02:28:04 -03:00
committed by GitHub

View File

@@ -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