mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-07 23:28:30 +00:00
Declaring and make some tool configurable using env vars (#376)
This commit is contained in:
@@ -2,7 +2,7 @@ import os
|
||||
import secrets
|
||||
from typing import Any, Dict, List, Optional, Type
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from openai import OpenAI
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
@@ -33,6 +33,9 @@ class AIMindTool(BaseTool):
|
||||
datasources: Optional[List[Dict[str, Any]]] = None
|
||||
mind_name: Optional[str] = None
|
||||
package_dependencies: List[str] = ["minds-sdk"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="MINDS_API_KEY", description="API key for AI-Minds", required=True),
|
||||
]
|
||||
|
||||
def __init__(self, api_key: Optional[str] = None, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
@@ -85,4 +88,4 @@ class AIMindTool(BaseTool):
|
||||
stream=False,
|
||||
)
|
||||
|
||||
return completion.choices[0].message.content
|
||||
return completion.choices[0].message.content
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
from typing import Any, List
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
|
||||
try:
|
||||
from linkup import LinkupClient
|
||||
@@ -24,8 +25,11 @@ class LinkupSearchTool(BaseTool):
|
||||
)
|
||||
_client: LinkupClient = PrivateAttr() # type: ignore
|
||||
package_dependencies: List[str] = ["linkup-sdk"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="LINKUP_API_KEY", description="API key for Linkup", required=True),
|
||||
]
|
||||
|
||||
def __init__(self, api_key: str):
|
||||
def __init__(self, api_key: str | None = None):
|
||||
"""
|
||||
Initialize the tool with an API key.
|
||||
"""
|
||||
@@ -48,7 +52,7 @@ class LinkupSearchTool(BaseTool):
|
||||
"The 'linkup-sdk' package is required to use the LinkupSearchTool. "
|
||||
"Please install it with: uv add linkup-sdk"
|
||||
)
|
||||
self._client = LinkupClient(api_key=api_key)
|
||||
self._client = LinkupClient(api_key=api_key or os.getenv("LINKUP_API_KEY"))
|
||||
|
||||
def _run(
|
||||
self, query: str, depth: str = "standard", output_type: str = "searchResults"
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
"""Multion tool spec."""
|
||||
|
||||
import os
|
||||
from typing import Any, Optional, List
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
|
||||
|
||||
class MultiOnTool(BaseTool):
|
||||
@@ -17,6 +18,9 @@ class MultiOnTool(BaseTool):
|
||||
local: bool = False
|
||||
max_steps: int = 3
|
||||
package_dependencies: List[str] = ["multion"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="MULTION_API_KEY", description="API key for Multion", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -44,7 +48,7 @@ class MultiOnTool(BaseTool):
|
||||
)
|
||||
self.session_id = None
|
||||
self.local = local
|
||||
self.multion = MultiOn(api_key=api_key)
|
||||
self.multion = MultiOn(api_key=api_key or os.getenv("MULTION_API_KEY"))
|
||||
self.max_steps = max_steps
|
||||
|
||||
def _run(
|
||||
|
||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
||||
from platform import architecture, python_version
|
||||
from typing import Any, List, Type
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
try:
|
||||
@@ -73,6 +73,10 @@ class OxylabsAmazonProductScraperTool(BaseTool):
|
||||
oxylabs_api: RealtimeClient
|
||||
config: OxylabsAmazonProductScraperConfig
|
||||
package_dependencies: List[str] = ["oxylabs"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="OXYLABS_USERNAME", description="Username for Oxylabs", required=True),
|
||||
EnvVar(name="OXYLABS_PASSWORD", description="Password for Oxylabs", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
||||
from platform import architecture, python_version
|
||||
from typing import Any, List, Type
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
try:
|
||||
@@ -75,6 +75,10 @@ class OxylabsAmazonSearchScraperTool(BaseTool):
|
||||
oxylabs_api: RealtimeClient
|
||||
config: OxylabsAmazonSearchScraperConfig
|
||||
package_dependencies: List[str] = ["oxylabs"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="OXYLABS_USERNAME", description="Username for Oxylabs", required=True),
|
||||
EnvVar(name="OXYLABS_PASSWORD", description="Password for Oxylabs", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
||||
from platform import architecture, python_version
|
||||
from typing import Any, List, Type
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
try:
|
||||
@@ -78,6 +78,10 @@ class OxylabsGoogleSearchScraperTool(BaseTool):
|
||||
oxylabs_api: RealtimeClient
|
||||
config: OxylabsGoogleSearchScraperConfig
|
||||
package_dependencies: List[str] = ["oxylabs"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="OXYLABS_USERNAME", description="Username for Oxylabs", required=True),
|
||||
EnvVar(name="OXYLABS_PASSWORD", description="Password for Oxylabs", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
||||
from platform import architecture, python_version
|
||||
from typing import Any, List, Type
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
try:
|
||||
@@ -69,6 +69,10 @@ class OxylabsUniversalScraperTool(BaseTool):
|
||||
oxylabs_api: RealtimeClient
|
||||
config: OxylabsUniversalScraperConfig
|
||||
package_dependencies: List[str] = ["oxylabs"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="OXYLABS_USERNAME", description="Username for Oxylabs", required=True),
|
||||
EnvVar(name="OXYLABS_PASSWORD", description="Password for Oxylabs", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import os
|
||||
import logging
|
||||
from typing import Any, Dict, Literal, Optional, Type, List
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
@@ -29,6 +30,9 @@ class ScrapflyScrapeWebsiteTool(BaseTool):
|
||||
api_key: str = None
|
||||
scrapfly: Optional[Any] = None
|
||||
package_dependencies: List[str] = ["scrapfly-sdk"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="SCRAPFLY_API_KEY", description="API key for Scrapfly", required=True),
|
||||
]
|
||||
|
||||
def __init__(self, api_key: str):
|
||||
super().__init__()
|
||||
@@ -47,7 +51,7 @@ class ScrapflyScrapeWebsiteTool(BaseTool):
|
||||
raise ImportError(
|
||||
"`scrapfly-sdk` package not found, please run `uv add scrapfly-sdk`"
|
||||
)
|
||||
self.scrapfly = ScrapflyClient(key=api_key)
|
||||
self.scrapfly = ScrapflyClient(key=api_key or os.getenv("SCRAPFLY_API_KEY"))
|
||||
|
||||
def _run(
|
||||
self,
|
||||
|
||||
@@ -2,7 +2,7 @@ import logging
|
||||
from typing import Any, Dict, Literal, Optional, Type, List
|
||||
from urllib.parse import unquote, urlparse
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
@@ -54,6 +54,9 @@ class SpiderTool(BaseTool):
|
||||
log_failures: bool = True
|
||||
config: SpiderToolConfig = SpiderToolConfig()
|
||||
package_dependencies: List[str] = ["spider-client"]
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="SPIDER_API_KEY", description="API key for Spider.cloud", required=True),
|
||||
]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user