mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-04 00:32:36 +00:00
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""Cache handler for tool usage results."""
|
|
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, PrivateAttr
|
|
|
|
|
|
class CacheHandler(BaseModel):
|
|
"""Handles caching of tool execution results.
|
|
|
|
Provides in-memory caching for tool outputs based on tool name and input.
|
|
|
|
Notes:
|
|
- TODO: Make thread-safe.
|
|
"""
|
|
|
|
_cache: dict[str, Any] = PrivateAttr(default_factory=dict)
|
|
|
|
def add(self, tool: str, input: str, output: Any) -> None:
|
|
"""Add a tool result to the cache.
|
|
|
|
Args:
|
|
tool: Name of the tool.
|
|
input: Input string used for the tool.
|
|
output: Output result from tool execution.
|
|
|
|
Notes:
|
|
- TODO: Rename 'input' parameter to avoid shadowing builtin.
|
|
"""
|
|
self._cache[f"{tool}-{input}"] = output
|
|
|
|
def read(self, tool: str, input: str) -> Any | None:
|
|
"""Retrieve a cached tool result.
|
|
|
|
Args:
|
|
tool: Name of the tool.
|
|
input: Input string used for the tool.
|
|
|
|
Returns:
|
|
Cached result if found, None otherwise.
|
|
|
|
Notes:
|
|
- TODO: Rename 'input' parameter to avoid shadowing builtin.
|
|
"""
|
|
return self._cache.get(f"{tool}-{input}")
|