feat: add required env var validation for brightdata

Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
This commit is contained in:
Mike Plachta
2025-10-02 09:35:29 -07:00
committed by GitHub
parent 5456c80556
commit c5ac5fa78a
3 changed files with 45 additions and 12 deletions

View File

@@ -3,7 +3,7 @@ import os
from typing import Any
import aiohttp
from crewai.tools import BaseTool
from crewai.tools import BaseTool, EnvVar
from pydantic import BaseModel, Field
@@ -414,6 +414,15 @@ class BrightDataDatasetTool(BaseTool):
format: str = "json"
zipcode: str | None = None
additional_params: dict[str, Any] | None = None
env_vars: list[EnvVar] = Field(
default_factory=lambda: [
EnvVar(
name="BRIGHT_DATA_API_KEY",
description="API key for Bright Data",
required=True,
),
]
)
def __init__(
self,
@@ -422,8 +431,9 @@ class BrightDataDatasetTool(BaseTool):
format: str = "json",
zipcode: str | None = None,
additional_params: dict[str, Any] | None = None,
**kwargs: Any,
):
super().__init__()
super().__init__(**kwargs)
self.dataset_type = dataset_type
self.url = url
self.format = format
@@ -441,7 +451,7 @@ class BrightDataDatasetTool(BaseTool):
zipcode: str | None = None,
additional_params: dict[str, Any] | None = None,
polling_interval: int = 1,
) -> dict:
) -> str:
"""Asynchronously trigger and poll Bright Data dataset scraping.
Args:

View File

@@ -2,7 +2,7 @@ import os
from typing import Any
import urllib.parse
from crewai.tools import BaseTool
from crewai.tools import BaseTool, EnvVar
from pydantic import BaseModel, Field
import requests
@@ -89,6 +89,15 @@ class BrightDataSearchTool(BaseTool):
search_type: str | None = None
device_type: str = "desktop"
parse_results: bool = True
env_vars: list[EnvVar] = Field(
default_factory=lambda: [
EnvVar(
name="BRIGHT_DATA_API_KEY",
description="API key for Bright Data",
required=True,
),
]
)
def __init__(
self,
@@ -99,8 +108,9 @@ class BrightDataSearchTool(BaseTool):
search_type: str | None = None,
device_type: str = "desktop",
parse_results: bool = True,
**kwargs: Any,
):
super().__init__()
super().__init__(**kwargs)
self.base_url = self._config.API_URL
self.query = query
self.search_engine = search_engine
@@ -110,8 +120,8 @@ class BrightDataSearchTool(BaseTool):
self.device_type = device_type
self.parse_results = parse_results
self.api_key = os.getenv("BRIGHT_DATA_API_KEY")
self.zone = os.getenv("BRIGHT_DATA_ZONE")
self.api_key = os.getenv("BRIGHT_DATA_API_KEY") or ""
self.zone = os.getenv("BRIGHT_DATA_ZONE") or ""
if not self.api_key:
raise ValueError("BRIGHT_DATA_API_KEY environment variable is required.")
if not self.zone:

View File

@@ -1,7 +1,7 @@
import os
from typing import Any
from crewai.tools import BaseTool
from crewai.tools import BaseTool, EnvVar
from pydantic import BaseModel, Field
import requests
@@ -69,18 +69,31 @@ class BrightDataWebUnlockerTool(BaseTool):
url: str | None = None
format: str = "raw"
data_format: str = "markdown"
env_vars: list[EnvVar] = Field(
default_factory=lambda: [
EnvVar(
name="BRIGHT_DATA_API_KEY",
description="API key for Bright Data",
required=True,
),
]
)
def __init__(
self, url: str | None = None, format: str = "raw", data_format: str = "markdown"
self,
url: str | None = None,
format: str = "raw",
data_format: str = "markdown",
**kwargs: Any,
):
super().__init__()
super().__init__(**kwargs)
self.base_url = self._config.API_URL
self.url = url
self.format = format
self.data_format = data_format
self.api_key = os.getenv("BRIGHT_DATA_API_KEY")
self.zone = os.getenv("BRIGHT_DATA_ZONE")
self.api_key = os.getenv("BRIGHT_DATA_API_KEY") or ""
self.zone = os.getenv("BRIGHT_DATA_ZONE") or ""
if not self.api_key:
raise ValueError("BRIGHT_DATA_API_KEY environment variable is required.")
if not self.zone: