mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 23:58:34 +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
|
import secrets
|
||||||
from typing import Any, Dict, List, Optional, Type
|
from typing import Any, Dict, List, Optional, Type
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
@@ -33,6 +33,9 @@ class AIMindTool(BaseTool):
|
|||||||
datasources: Optional[List[Dict[str, Any]]] = None
|
datasources: Optional[List[Dict[str, Any]]] = None
|
||||||
mind_name: Optional[str] = None
|
mind_name: Optional[str] = None
|
||||||
package_dependencies: List[str] = ["minds-sdk"]
|
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):
|
def __init__(self, api_key: Optional[str] = None, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
@@ -85,4 +88,4 @@ class AIMindTool(BaseTool):
|
|||||||
stream=False,
|
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 typing import Any, List
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from linkup import LinkupClient
|
from linkup import LinkupClient
|
||||||
@@ -24,8 +25,11 @@ class LinkupSearchTool(BaseTool):
|
|||||||
)
|
)
|
||||||
_client: LinkupClient = PrivateAttr() # type: ignore
|
_client: LinkupClient = PrivateAttr() # type: ignore
|
||||||
package_dependencies: List[str] = ["linkup-sdk"]
|
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.
|
Initialize the tool with an API key.
|
||||||
"""
|
"""
|
||||||
@@ -48,7 +52,7 @@ class LinkupSearchTool(BaseTool):
|
|||||||
"The 'linkup-sdk' package is required to use the LinkupSearchTool. "
|
"The 'linkup-sdk' package is required to use the LinkupSearchTool. "
|
||||||
"Please install it with: uv add linkup-sdk"
|
"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(
|
def _run(
|
||||||
self, query: str, depth: str = "standard", output_type: str = "searchResults"
|
self, query: str, depth: str = "standard", output_type: str = "searchResults"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
"""Multion tool spec."""
|
"""Multion tool spec."""
|
||||||
|
|
||||||
|
import os
|
||||||
from typing import Any, Optional, List
|
from typing import Any, Optional, List
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
|
|
||||||
|
|
||||||
class MultiOnTool(BaseTool):
|
class MultiOnTool(BaseTool):
|
||||||
@@ -17,6 +18,9 @@ class MultiOnTool(BaseTool):
|
|||||||
local: bool = False
|
local: bool = False
|
||||||
max_steps: int = 3
|
max_steps: int = 3
|
||||||
package_dependencies: List[str] = ["multion"]
|
package_dependencies: List[str] = ["multion"]
|
||||||
|
env_vars: List[EnvVar] = [
|
||||||
|
EnvVar(name="MULTION_API_KEY", description="API key for Multion", required=True),
|
||||||
|
]
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -44,7 +48,7 @@ class MultiOnTool(BaseTool):
|
|||||||
)
|
)
|
||||||
self.session_id = None
|
self.session_id = None
|
||||||
self.local = local
|
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
|
self.max_steps = max_steps
|
||||||
|
|
||||||
def _run(
|
def _run(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
|||||||
from platform import architecture, python_version
|
from platform import architecture, python_version
|
||||||
from typing import Any, List, Type
|
from typing import Any, List, Type
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -73,6 +73,10 @@ class OxylabsAmazonProductScraperTool(BaseTool):
|
|||||||
oxylabs_api: RealtimeClient
|
oxylabs_api: RealtimeClient
|
||||||
config: OxylabsAmazonProductScraperConfig
|
config: OxylabsAmazonProductScraperConfig
|
||||||
package_dependencies: List[str] = ["oxylabs"]
|
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__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
|||||||
from platform import architecture, python_version
|
from platform import architecture, python_version
|
||||||
from typing import Any, List, Type
|
from typing import Any, List, Type
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -75,6 +75,10 @@ class OxylabsAmazonSearchScraperTool(BaseTool):
|
|||||||
oxylabs_api: RealtimeClient
|
oxylabs_api: RealtimeClient
|
||||||
config: OxylabsAmazonSearchScraperConfig
|
config: OxylabsAmazonSearchScraperConfig
|
||||||
package_dependencies: List[str] = ["oxylabs"]
|
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__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
|||||||
from platform import architecture, python_version
|
from platform import architecture, python_version
|
||||||
from typing import Any, List, Type
|
from typing import Any, List, Type
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -78,6 +78,10 @@ class OxylabsGoogleSearchScraperTool(BaseTool):
|
|||||||
oxylabs_api: RealtimeClient
|
oxylabs_api: RealtimeClient
|
||||||
config: OxylabsGoogleSearchScraperConfig
|
config: OxylabsGoogleSearchScraperConfig
|
||||||
package_dependencies: List[str] = ["oxylabs"]
|
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__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from importlib.metadata import version
|
|||||||
from platform import architecture, python_version
|
from platform import architecture, python_version
|
||||||
from typing import Any, List, Type
|
from typing import Any, List, Type
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -69,6 +69,10 @@ class OxylabsUniversalScraperTool(BaseTool):
|
|||||||
oxylabs_api: RealtimeClient
|
oxylabs_api: RealtimeClient
|
||||||
config: OxylabsUniversalScraperConfig
|
config: OxylabsUniversalScraperConfig
|
||||||
package_dependencies: List[str] = ["oxylabs"]
|
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__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import os
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, Dict, Literal, Optional, Type, List
|
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
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
@@ -29,6 +30,9 @@ class ScrapflyScrapeWebsiteTool(BaseTool):
|
|||||||
api_key: str = None
|
api_key: str = None
|
||||||
scrapfly: Optional[Any] = None
|
scrapfly: Optional[Any] = None
|
||||||
package_dependencies: List[str] = ["scrapfly-sdk"]
|
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):
|
def __init__(self, api_key: str):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -47,7 +51,7 @@ class ScrapflyScrapeWebsiteTool(BaseTool):
|
|||||||
raise ImportError(
|
raise ImportError(
|
||||||
"`scrapfly-sdk` package not found, please run `uv add scrapfly-sdk`"
|
"`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(
|
def _run(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import logging
|
|||||||
from typing import Any, Dict, Literal, Optional, Type, List
|
from typing import Any, Dict, Literal, Optional, Type, List
|
||||||
from urllib.parse import unquote, urlparse
|
from urllib.parse import unquote, urlparse
|
||||||
|
|
||||||
from crewai.tools import BaseTool
|
from crewai.tools import BaseTool, EnvVar
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
@@ -54,6 +54,9 @@ class SpiderTool(BaseTool):
|
|||||||
log_failures: bool = True
|
log_failures: bool = True
|
||||||
config: SpiderToolConfig = SpiderToolConfig()
|
config: SpiderToolConfig = SpiderToolConfig()
|
||||||
package_dependencies: List[str] = ["spider-client"]
|
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__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
Reference in New Issue
Block a user