File size: 1,688 Bytes
b28635c 20d720d c5514db b28635c 6d99a60 b73fa18 20d720d c537b15 f130374 d39c478 c5514db 20d720d f130374 c5514db d0f6de1 f130374 20d720d c537b15 f130374 d39c478 c537b15 f130374 d0f6de1 f130374 20d720d c537b15 f130374 d39c478 c537b15 f130374 d0f6de1 f130374 c537b15 f130374 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#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) |