TatTwamAI / agents /tools /knowledge_tools.py
Jayashree Sridhar
included privateaatr in all tools
c5514db
#from .base_tool import BaseTool
from utils.knowledge_base import KnowledgeBase
from pydantic import PrivateAttr
from crewai.tools import BaseTool
class SearchKnowledgeTool(BaseTool):
name: str = "search_knowledge"
description: str = "Search self-help or spiritual wisdom."
model_config = {"arbitrary_types_allowed": True}
_kp: KnowledgeBase = PrivateAttr()
def __init__(self, config=None):
super().__init__()
self._kb = KnowledgeBase(config)
def _run(self, query: str, k: int = 5):
return self.kb.search(query, k=k) if self.kb.is_initialized() else \
[{"text": "General wisdom", "score": 1.0}]
class ExtractWisdomTool(BaseTool):
name: str = "extract_wisdom"
description: str = "Extract most relevant wisdom for a given query."
model_config = {"arbitrary_types_allowed": True}
def __init__(self, config=None):
super().__init__()
def _run(self, search_results: list, user_context: dict):
return search_results[:3]
class SuggestPracticesTool(BaseTool):
name: str = "suggest_practices"
description: str = "Recommend meditations or self-care practices."
model_config = {"arbitrary_types_allowed": True}
def __init__(self, config=None):
super().__init__()
def _run(self, emotional_state: str, cultural_context: str = None):
return {"name": "Mindful Breathing", "description": "Focus on your breath to calm the mind."}
class KnowledgeTools:
def __init__(self, config=None):
self.search_knowledge = SearchKnowledgeTool(config)
self.extract_wisdom = ExtractWisdomTool(config)
self.suggest_practices = SuggestPracticesTool(config)