mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-11 00:58:30 +00:00
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
89 lines
3.0 KiB
Python
89 lines
3.0 KiB
Python
"""
|
|
Crewai Enterprise Tools
|
|
"""
|
|
|
|
import os
|
|
import typing as t
|
|
import logging
|
|
import json
|
|
from crewai.tools import BaseTool
|
|
from crewai_tools.adapters.enterprise_adapter import EnterpriseActionKitToolAdapter
|
|
from crewai_tools.adapters.tool_collection import ToolCollection
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def CrewaiEnterpriseTools(
|
|
enterprise_token: t.Optional[str] = None,
|
|
actions_list: t.Optional[t.List[str]] = None,
|
|
enterprise_action_kit_project_id: t.Optional[str] = None,
|
|
enterprise_action_kit_project_url: t.Optional[str] = None,
|
|
) -> ToolCollection[BaseTool]:
|
|
"""Factory function that returns crewai enterprise tools.
|
|
|
|
Args:
|
|
enterprise_token: The token for accessing enterprise actions.
|
|
If not provided, will try to use CREWAI_ENTERPRISE_TOOLS_TOKEN env var.
|
|
actions_list: Optional list of specific tool names to include.
|
|
If provided, only tools with these names will be returned.
|
|
enterprise_action_kit_project_id: Optional ID of the Enterprise Action Kit project.
|
|
enterprise_action_kit_project_url: Optional URL of the Enterprise Action Kit project.
|
|
|
|
Returns:
|
|
A ToolCollection of BaseTool instances for enterprise actions
|
|
"""
|
|
|
|
import warnings
|
|
warnings.warn(
|
|
"CrewaiEnterpriseTools will be removed in v1.0.0. Considering use `Agent(apps=[...])` instead.",
|
|
DeprecationWarning,
|
|
stacklevel=2
|
|
)
|
|
|
|
if enterprise_token is None or enterprise_token == "":
|
|
enterprise_token = os.environ.get("CREWAI_ENTERPRISE_TOOLS_TOKEN")
|
|
if not enterprise_token:
|
|
logger.warning("No enterprise token provided")
|
|
|
|
adapter_kwargs = {"enterprise_action_token": enterprise_token}
|
|
|
|
if enterprise_action_kit_project_id is not None:
|
|
adapter_kwargs["enterprise_action_kit_project_id"] = (
|
|
enterprise_action_kit_project_id
|
|
)
|
|
if enterprise_action_kit_project_url is not None:
|
|
adapter_kwargs["enterprise_action_kit_project_url"] = (
|
|
enterprise_action_kit_project_url
|
|
)
|
|
|
|
adapter = EnterpriseActionKitToolAdapter(**adapter_kwargs)
|
|
all_tools = adapter.tools()
|
|
parsed_actions_list = _parse_actions_list(actions_list)
|
|
|
|
# Filter tools based on the provided list
|
|
return ToolCollection(all_tools).filter_by_names(parsed_actions_list)
|
|
|
|
|
|
# ENTERPRISE INJECTION ONLY
|
|
def _parse_actions_list(actions_list: t.Optional[t.List[str]]) -> t.List[str] | None:
|
|
"""Parse a string representation of a list of tool names to a list of tool names.
|
|
|
|
Args:
|
|
actions_list: A string representation of a list of tool names.
|
|
|
|
Returns:
|
|
A list of tool names.
|
|
"""
|
|
if actions_list is not None:
|
|
return actions_list
|
|
|
|
actions_list_from_env = os.environ.get("CREWAI_ENTERPRISE_TOOLS_ACTIONS_LIST")
|
|
if actions_list_from_env is None:
|
|
return None
|
|
|
|
try:
|
|
return json.loads(actions_list_from_env)
|
|
except json.JSONDecodeError:
|
|
logger.warning(f"Failed to parse actions_list as JSON: {actions_list_from_env}")
|
|
return None
|