|
""" |
|
Agent Tools module for Personal Coach CrewAI Application |
|
Contains specialized tools for each agent's functionality |
|
""" |
|
|
|
from typing import TYPE_CHECKING, Dict, Any |
|
|
|
|
|
__version__ = "1.0.0" |
|
|
|
|
|
if TYPE_CHECKING: |
|
from .voice_tools import VoiceTools, MultilingualSTT, MultilingualTTS |
|
from .llm_tools import LLMTools, MistralModel, PromptGenerator |
|
from .knowledge_tools import KnowledgeTools, RAGPipeline, ContextBuilder |
|
from .validation_tools import ValidationTools, ValidationResult |
|
|
|
|
|
__all__ = [ |
|
|
|
"VoiceTools", |
|
"MultilingualSTT", |
|
"MultilingualTTS", |
|
|
|
|
|
"LLMTools", |
|
"MistralModel", |
|
"PromptGenerator", |
|
|
|
|
|
"KnowledgeTools", |
|
"RAGPipeline", |
|
"ContextBuilder", |
|
|
|
|
|
"ValidationTools", |
|
"ValidationResult", |
|
|
|
|
|
"create_tool_suite", |
|
"get_tool_by_name", |
|
|
|
|
|
"SUPPORTED_LANGUAGES", |
|
"TOOL_CATEGORIES" |
|
] |
|
|
|
|
|
SUPPORTED_LANGUAGES = [ |
|
"en", "es", "fr", "de", "it", "pt", "ru", "zh", |
|
"ja", "ko", "hi", "ar", "bn", "pa", "te", "mr", |
|
"ta", "ur", "gu", "kn", "ml", "or" |
|
] |
|
|
|
TOOL_CATEGORIES = { |
|
"VOICE": ["speech_to_text", "text_to_speech", "language_detection"], |
|
"LLM": ["generate_response", "generate_questions", "summarize", "paraphrase"], |
|
"KNOWLEDGE": ["search_knowledge", "extract_wisdom", "find_practices"], |
|
"VALIDATION": ["validate_response", "check_safety", "analyze_tone"] |
|
} |
|
|
|
|
|
def create_tool_suite(config) -> Dict[str, Any]: |
|
""" |
|
Create a complete suite of tools for all agents |
|
|
|
Args: |
|
config: Configuration object |
|
|
|
Returns: |
|
dict: Dictionary of initialized tools |
|
""" |
|
from .voice_tools import VoiceTools |
|
from .llm_tools import LLMTools |
|
from .knowledge_tools import KnowledgeTools |
|
from .validation_tools import ValidationTools |
|
|
|
tools = { |
|
"voice": VoiceTools(config), |
|
"llm": LLMTools(config), |
|
"knowledge": KnowledgeTools(config), |
|
"validation": ValidationTools(config) |
|
} |
|
|
|
return tools |
|
|
|
def get_tool_by_name(tool_name: str, config): |
|
""" |
|
Get a specific tool by name |
|
|
|
Args: |
|
tool_name: Name of the tool |
|
config: Configuration object |
|
|
|
Returns: |
|
Tool instance or None |
|
""" |
|
tool_mapping = { |
|
"voice": lambda c: __import__("agents.tools.voice_tools", fromlist=["VoiceTools"]).VoiceTools(c), |
|
"llm": lambda c: __import__("agents.tools.llm_tools", fromlist=["LLMTools"]).LLMTools(c), |
|
"knowledge": lambda c: __import__("agents.tools.knowledge_tools", fromlist=["KnowledgeTools"]).KnowledgeTools(c), |
|
"validation": lambda c: __import__("agents.tools.validation_tools", fromlist=["ValidationTools"]).ValidationTools(c) |
|
} |
|
|
|
tool_factory = tool_mapping.get(tool_name.lower()) |
|
if tool_factory: |
|
return tool_factory(config) |
|
return None |
|
|
|
|
|
def register_tools_with_crew(): |
|
""" |
|
Register all tools with CrewAI framework |
|
Returns a list of tool configurations for CrewAI |
|
""" |
|
tool_configs = [ |
|
{ |
|
"name": "speech_to_text", |
|
"description": "Convert speech in any language to text", |
|
"category": "VOICE" |
|
}, |
|
{ |
|
"name": "text_to_speech", |
|
"description": "Convert text to natural speech in multiple languages", |
|
"category": "VOICE" |
|
}, |
|
{ |
|
"name": "search_knowledge", |
|
"description": "Search through spiritual and self-help texts", |
|
"category": "KNOWLEDGE" |
|
}, |
|
{ |
|
"name": "generate_response", |
|
"description": "Generate empathetic and helpful responses", |
|
"category": "LLM" |
|
}, |
|
{ |
|
"name": "validate_response", |
|
"description": "Ensure response safety and appropriateness", |
|
"category": "VALIDATION" |
|
} |
|
] |
|
|
|
return tool_configs |
|
|
|
|
|
import os |
|
if os.getenv("DEBUG_MODE", "false").lower() == "true": |
|
print(f"Agent Tools module v{__version__} initialized") |
|
print(f"Supported languages: {len(SUPPORTED_LANGUAGES)}") |
|
print(f"Tool categories: {list(TOOL_CATEGORIES.keys())}") |