From b80dd1ca8b83f5aa9b9cb30e6b5af4c54f482376 Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Wed, 17 Apr 2024 13:36:21 +0000 Subject: [PATCH 1/2] added BrowserbaseLoadTool --- src/crewai_tools/__init__.py | 1 + src/crewai_tools/tools/__init__.py | 3 +- .../tools/browserbase_load_tool/README.md | 29 +++++++++++++++++++ .../browserbase_load_tool.py | 21 ++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/crewai_tools/tools/browserbase_load_tool/README.md create mode 100644 src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py diff --git a/src/crewai_tools/__init__.py b/src/crewai_tools/__init__.py index 642ad703c..34e15b876 100644 --- a/src/crewai_tools/__init__.py +++ b/src/crewai_tools/__init__.py @@ -1,5 +1,6 @@ from .tools.base_tool import BaseTool, Tool, tool from .tools import ( + BrowserbaseLoadTool, CodeDocsSearchTool, CSVSearchTool, DirectorySearchTool, diff --git a/src/crewai_tools/tools/__init__.py b/src/crewai_tools/tools/__init__.py index 99860a14f..efbe0588e 100644 --- a/src/crewai_tools/tools/__init__.py +++ b/src/crewai_tools/tools/__init__.py @@ -1,3 +1,4 @@ +from .browserbase_load_tool.browserbase_load_tool import BrowserbaseLoadTool from .code_docs_search_tool.code_docs_search_tool import CodeDocsSearchTool from .csv_search_tool.csv_search_tool import CSVSearchTool from .directory_search_tool.directory_search_tool import DirectorySearchTool @@ -18,4 +19,4 @@ from .selenium_scraping_tool.selenium_scraping_tool import SeleniumScrapingTool from .website_search.website_search_tool import WebsiteSearchTool from .xml_search_tool.xml_search_tool import XMLSearchTool from .youtube_channel_search_tool.youtube_channel_search_tool import YoutubeChannelSearchTool -from .youtube_video_search_tool.youtube_video_search_tool import YoutubeVideoSearchTool \ No newline at end of file +from .youtube_video_search_tool.youtube_video_search_tool import YoutubeVideoSearchTool diff --git a/src/crewai_tools/tools/browserbase_load_tool/README.md b/src/crewai_tools/tools/browserbase_load_tool/README.md new file mode 100644 index 000000000..0007feb91 --- /dev/null +++ b/src/crewai_tools/tools/browserbase_load_tool/README.md @@ -0,0 +1,29 @@ +# BrowserbaseLoadTool + +## Description + +[Browserbase](https://browserbase.com) is a serverless platform for running headless browsers, it offers advanced debugging, session recordings, stealth mode, integrated proxies and captcha solving. + +## Installation + +- Get an API key from [browserbase.com](https://browserbase.com) and set it in environment variables (`BROWSERBASE_KEY`). +- Install the [Browserbase SDK](http://github.com/browserbase/python-sdk) along with `crewai[tools]` package: + +``` +pip install browserbase 'crewai[tools]' +``` + +## Example + +Utilize the BrowserbaseLoadTool as follows to allow your agent to load websites: + +```python +from crewai_tools import BrowserbaseLoadTool + +tool = BrowserbaseLoadTool() +``` + +## Arguments + +- `api_key`: Optional. Specifies Browserbase API key. Defaults is the `BROWSERBASE_KEY` environment variable. +- `text_content`: Optional. Load pages as readable text. Default is `False`. diff --git a/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py b/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py new file mode 100644 index 000000000..03ee53f99 --- /dev/null +++ b/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py @@ -0,0 +1,21 @@ +import os +from crewai_tools import BaseTool +from typing import Union + +class BrowserbaseLoadTool(BaseTool): + name: str = "Browserbase web load tool" + description: str = "Load webpages in a headless browser using Browserbase and return the contents" + + def __init__(self, api_key: str = os.environ["BROWSERBASE_KEY"], text_content: bool = False): + try: + from browserbase import Browserbase + except ImportError: + raise ImportError( + "`browserbase` package not found, please run `pip install browserbase`" + ) + + self.browserbase = Browserbase(api_key=api_key) + self.text_content = text_content + + def _run(self, url: str): + return self.browserbase.load_url(url, text_content=self.text_content) From e0d799c075972414d328ee4d9e362e286c90f0ef Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Fri, 19 Apr 2024 11:40:03 +0000 Subject: [PATCH 2/2] updated browserbase integration --- src/crewai_tools/tools/browserbase_load_tool/README.md | 4 ++-- .../tools/browserbase_load_tool/browserbase_load_tool.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/crewai_tools/tools/browserbase_load_tool/README.md b/src/crewai_tools/tools/browserbase_load_tool/README.md index 0007feb91..a2866f9a8 100644 --- a/src/crewai_tools/tools/browserbase_load_tool/README.md +++ b/src/crewai_tools/tools/browserbase_load_tool/README.md @@ -6,7 +6,7 @@ ## Installation -- Get an API key from [browserbase.com](https://browserbase.com) and set it in environment variables (`BROWSERBASE_KEY`). +- Get an API key from [browserbase.com](https://browserbase.com) and set it in environment variables (`BROWSERBASE_API_KEY`). - Install the [Browserbase SDK](http://github.com/browserbase/python-sdk) along with `crewai[tools]` package: ``` @@ -25,5 +25,5 @@ tool = BrowserbaseLoadTool() ## Arguments -- `api_key`: Optional. Specifies Browserbase API key. Defaults is the `BROWSERBASE_KEY` environment variable. +- `api_key`: Optional. Specifies Browserbase API key. Defaults is the `BROWSERBASE_API_KEY` environment variable. - `text_content`: Optional. Load pages as readable text. Default is `False`. diff --git a/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py b/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py index 03ee53f99..126219bd3 100644 --- a/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py +++ b/src/crewai_tools/tools/browserbase_load_tool/browserbase_load_tool.py @@ -1,12 +1,12 @@ import os from crewai_tools import BaseTool -from typing import Union +from typing import Union, Optional class BrowserbaseLoadTool(BaseTool): name: str = "Browserbase web load tool" description: str = "Load webpages in a headless browser using Browserbase and return the contents" - def __init__(self, api_key: str = os.environ["BROWSERBASE_KEY"], text_content: bool = False): + def __init__(self, api_key: Optional[str] = None, text_content: bool = False): try: from browserbase import Browserbase except ImportError: