Merge branch 'main' of github.com:crewAIInc/crewAI-tools into fix/optional-dependencies

This commit is contained in:
Lorenze Jay
2025-01-13 10:32:06 -08:00
3 changed files with 13 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
from typing import Any, Dict, Optional, Type from typing import Any, Dict, Optional, Type
from crewai.tools import BaseTool from crewai.tools import BaseTool
from pydantic import BaseModel, ConfigDict, Field from pydantic import BaseModel, ConfigDict, Field, PrivateAttr
try: try:
@@ -29,7 +29,7 @@ class FirecrawlCrawlWebsiteTool(BaseTool):
description: str = "Crawl webpages using Firecrawl and return the contents" description: str = "Crawl webpages using Firecrawl and return the contents"
args_schema: Type[BaseModel] = FirecrawlCrawlWebsiteToolSchema args_schema: Type[BaseModel] = FirecrawlCrawlWebsiteToolSchema
api_key: Optional[str] = None api_key: Optional[str] = None
firecrawl: Optional["FirecrawlApp"] = None _firecrawl: Optional["FirecrawlApp"] = PrivateAttr(None)
def __init__(self, api_key: Optional[str] = None, **kwargs): def __init__(self, api_key: Optional[str] = None, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@@ -74,7 +74,7 @@ class FirecrawlCrawlWebsiteTool(BaseTool):
"crawlerOptions": crawler_options, "crawlerOptions": crawler_options,
"timeout": timeout, "timeout": timeout,
} }
return self.firecrawl.crawl_url(url, options) return self._firecrawl.crawl_url(url, options)
try: try:

View File

@@ -1,7 +1,7 @@
from typing import Any, Optional, Type from typing import Any, Optional, Type
from crewai.tools import BaseTool from crewai.tools import BaseTool
from pydantic import BaseModel, ConfigDict, Field from pydantic import BaseModel, ConfigDict, Field, PrivateAttr
try: try:
from firecrawl import FirecrawlApp from firecrawl import FirecrawlApp
@@ -22,10 +22,10 @@ class FirecrawlScrapeWebsiteTool(BaseTool):
arbitrary_types_allowed=True, validate_assignment=True, frozen=False arbitrary_types_allowed=True, validate_assignment=True, frozen=False
) )
name: str = "Firecrawl web scrape tool" name: str = "Firecrawl web scrape tool"
description: str = "Scrape webpages url using Firecrawl and return the contents" description: str = "Scrape webpages using Firecrawl and return the contents"
args_schema: Type[BaseModel] = FirecrawlScrapeWebsiteToolSchema args_schema: Type[BaseModel] = FirecrawlScrapeWebsiteToolSchema
api_key: Optional[str] = None api_key: Optional[str] = None
firecrawl: Optional["FirecrawlApp"] = None # Updated to use TYPE_CHECKING _firecrawl: Optional["FirecrawlApp"] = PrivateAttr(None)
def __init__(self, api_key: Optional[str] = None, **kwargs): def __init__(self, api_key: Optional[str] = None, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@@ -48,7 +48,7 @@ class FirecrawlScrapeWebsiteTool(BaseTool):
"`firecrawl-py` package not found, please run `uv add firecrawl-py`" "`firecrawl-py` package not found, please run `uv add firecrawl-py`"
) )
self.firecrawl = FirecrawlApp(api_key=api_key) self._firecrawl = FirecrawlApp(api_key=api_key)
def _run( def _run(
self, self,
@@ -64,7 +64,7 @@ class FirecrawlScrapeWebsiteTool(BaseTool):
"waitFor": 0, "waitFor": 0,
"timeout": timeout, "timeout": timeout,
} }
return self.firecrawl.scrape_url(url, options) return self._firecrawl.scrape_url(url, options)
try: try:

View File

@@ -1,7 +1,7 @@
from typing import Any, Dict, Optional, Type from typing import Any, Dict, Optional, Type
from crewai.tools import BaseTool from crewai.tools import BaseTool
from pydantic import BaseModel, Field, ConfigDict from pydantic import BaseModel, ConfigDict, Field, PrivateAttr
# Type checking import # Type checking import
try: try:
@@ -32,6 +32,9 @@ class FirecrawlSearchToolSchema(BaseModel):
class FirecrawlSearchTool(BaseTool): class FirecrawlSearchTool(BaseTool):
model_config = ConfigDict(
arbitrary_types_allowed=True, validate_assignment=True, frozen=False
)
model_config = ConfigDict( model_config = ConfigDict(
arbitrary_types_allowed=True, validate_assignment=True, frozen=False arbitrary_types_allowed=True, validate_assignment=True, frozen=False
) )
@@ -39,7 +42,7 @@ class FirecrawlSearchTool(BaseTool):
description: str = "Search webpages using Firecrawl and return the results" description: str = "Search webpages using Firecrawl and return the results"
args_schema: Type[BaseModel] = FirecrawlSearchToolSchema args_schema: Type[BaseModel] = FirecrawlSearchToolSchema
api_key: Optional[str] = None api_key: Optional[str] = None
firecrawl: Optional["FirecrawlApp"] = None _firecrawl: Optional["FirecrawlApp"] = PrivateAttr(None)
def __init__(self, api_key: Optional[str] = None, **kwargs): def __init__(self, api_key: Optional[str] = None, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@@ -86,7 +89,6 @@ class FirecrawlSearchTool(BaseTool):
raise RuntimeError("FirecrawlApp not properly initialized") raise RuntimeError("FirecrawlApp not properly initialized")
options = { options = {
"query": query,
"limit": limit, "limit": limit,
"tbs": tbs, "tbs": tbs,
"lang": lang, "lang": lang,