mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
Add usage limit feature to BaseTool class (#2904)
* Add usage limit feature to BaseTool class - Add max_usage_count and current_usage_count attributes to BaseTool - Implement usage limit checking in ToolUsage._use method - Add comprehensive tests for usage limit functionality - Maintain backward compatibility with None default for unlimited usage Co-Authored-By: Joe Moura <joao@crewai.com> * Fix CI failures and address code review feedback - Add max_usage_count/current_usage_count to CrewStructuredTool - Add input validation for positive max_usage_count - Add reset_usage_count method to BaseTool - Extract usage limit check into separate method - Add comprehensive edge case tests - Add proper type hints throughout - Fix linting issues Co-Authored-By: Joe Moura <joao@crewai.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Joe Moura <joao@crewai.com>
This commit is contained in:
committed by
GitHub
parent
7fe193866d
commit
22db4aae81
@@ -23,6 +23,8 @@ class CrewStructuredTool:
|
||||
args_schema: type[BaseModel],
|
||||
func: Callable[..., Any],
|
||||
result_as_answer: bool = False,
|
||||
max_usage_count: int | None = None,
|
||||
current_usage_count: int = 0,
|
||||
) -> None:
|
||||
"""Initialize the structured tool.
|
||||
|
||||
@@ -32,6 +34,8 @@ class CrewStructuredTool:
|
||||
args_schema: The pydantic model for the tool's arguments
|
||||
func: The function to run when the tool is called
|
||||
result_as_answer: Whether to return the output directly
|
||||
max_usage_count: Maximum number of times this tool can be used. None means unlimited usage.
|
||||
current_usage_count: Current number of times this tool has been used.
|
||||
"""
|
||||
self.name = name
|
||||
self.description = description
|
||||
@@ -39,6 +43,8 @@ class CrewStructuredTool:
|
||||
self.func = func
|
||||
self._logger = Logger()
|
||||
self.result_as_answer = result_as_answer
|
||||
self.max_usage_count = max_usage_count
|
||||
self.current_usage_count = current_usage_count
|
||||
|
||||
# Validate the function signature matches the schema
|
||||
self._validate_function_signature()
|
||||
|
||||
Reference in New Issue
Block a user