TatTwamAI / agents /tools /knowledge_tools_old.py
Jayashree Sridhar
First Version
20d720d
"""
Knowledge Base Tools for RAG
"""
from crewai.tools import BaseTool
from utils.knowledge_base import KnowledgeBase
from typing import List, Dict
class SearchKnowledgeTool(BaseTool):
name: str = "search_spiritual_texts"
description: str = "Search spiritual and self-help texts for relevant wisdom"
def __init__(self):
super().__init__()
self.kb = KnowledgeBase()
def _run(self, query: str, k: int = 5) -> List[Dict]:
"""Search knowledge base"""
if not self.kb.is_initialized():
return [{
"text": "Wisdom comes from understanding ourselves.",
"source": "General Wisdom",
"score": 1.0
}]
results = self.kb.search(query, k=k)
return results
class ExtractWisdomTool(BaseTool):
name: str = "extract_relevant_wisdom"
description: str = "Extract most relevant wisdom for user's situation"
def _run(self, search_results: List[Dict], user_context: Dict) -> List[Dict]:
"""Filter and rank wisdom based on relevance"""
emotion = user_context.get("primary_emotion", "neutral")
concerns = user_context.get("concerns", [])
# Score each result based on relevance
scored_results = []
for result in search_results:
score = result["score"]
# Boost score if emotion matches
if emotion.lower() in result["text"].lower():
score *= 1.5
# Boost score if concerns match
for concern in concerns:
if concern.lower() in result["text"].lower():
score *= 1.3
result["relevance_score"] = score
scored_results.append(result)
# Sort by relevance
scored_results.sort(key=lambda x: x["relevance_score"], reverse=True)
return scored_results[:3]
class SuggestPracticeTool(BaseTool):
name: str = "suggest_meditation_practice"
description: str = "Suggest appropriate meditation or practice"
def _run(self, emotional_state: str, cultural_context: str = None) -> Dict:
"""Suggest practice based on emotional state"""
practices = {
"anxiety": {
"name": "Box Breathing Technique",
"description": "A powerful technique used by Navy SEALs to calm anxiety",
"steps": [
"Sit comfortably with back straight",
"Exhale all air from your lungs",
"Inhale through nose for 4 counts",
"Hold breath for 4 counts",
"Exhale through mouth for 4 counts",
"Hold empty for 4 counts",
"Repeat 4-8 times"
],
"benefits": "Activates parasympathetic nervous system, reduces cortisol",
"duration": "5-10 minutes",
"origin": "Modern breathwork"
},
"sadness": {
"name": "Metta (Loving-Kindness) Meditation",
"description": "Ancient Buddhist practice to cultivate compassion",
"steps": [
"Sit comfortably, close your eyes",
"Place hand on heart",
"Begin with self: 'May I be happy, may I be peaceful'",
"Extend to loved ones",
"Include neutral people",
"Embrace difficult people",
"Radiate to all beings"
],
"benefits": "Increases self-compassion, reduces depression",
"duration": "15-20 minutes",
"origin": "Buddhist tradition"
},
"stress": {
"name": "Progressive Muscle Relaxation",
"description": "Systematic tension and release technique",
"steps": [
"Lie down comfortably",
"Start with toes - tense for 5 seconds",
"Release suddenly, notice relaxation",
"Move up through each muscle group",
"Face and scalp last",
"Rest in full body relaxation"
],
"benefits": "Reduces physical tension, improves sleep",
"duration": "15-20 minutes",
"origin": "Dr. Edmund Jacobson, 1920s"
}
}
default = {
"name": "Mindful Breathing",
"description": "Foundation of all meditation practices",
"steps": [
"Sit comfortably",
"Follow natural breath",
"Count breaths 1-10",
"Start again when distracted",
"No judgment, just awareness"
],
"benefits": "Calms mind, improves focus",
"duration": "5-15 minutes",
"origin": "Universal practice"
}
return practices.get(emotional_state.lower(), default)