Spaces:
Sleeping
Sleeping
| # Tool selection utilities for determining which tools to use | |
| from config import ( | |
| YOUTUBE_PATTERNS, REVERSE_TEXT_PATTERNS, WIKIPEDIA_PATTERNS, | |
| WEB_SEARCH_PATTERNS, AI_PATTERNS, FILE_PATTERNS | |
| ) | |
| def determine_tools_needed(question): | |
| """Determine which tools should be used for a given question.""" | |
| question_lower = question.lower() | |
| # YouTube detection | |
| needs_youtube = any(pattern in question_lower for pattern in YOUTUBE_PATTERNS) | |
| # Reverse text detection | |
| is_reverse_text = ( | |
| any(pattern in question_lower for pattern in REVERSE_TEXT_PATTERNS) or | |
| (question_lower != question_lower[::-1] and | |
| "ecnetnes" in question_lower or "sdrow" in question_lower) | |
| ) | |
| # Wikipedia detection | |
| needs_wikipedia = any(pattern in question_lower for pattern in WIKIPEDIA_PATTERNS) | |
| # Web search detection | |
| needs_web_search = any(pattern in question_lower for pattern in WEB_SEARCH_PATTERNS) | |
| # Knowledge retrieval for AI/agent questions | |
| needs_knowledge = any(term in question_lower for term in AI_PATTERNS) | |
| # File analysis detection | |
| has_file_analysis = any(pattern in question_lower for pattern in FILE_PATTERNS) | |
| return { | |
| "use_youtube": needs_youtube, | |
| "use_wikipedia": needs_wikipedia, | |
| "is_reverse_text": is_reverse_text, | |
| "use_web_search": needs_web_search, | |
| "use_knowledge_retrieval": needs_knowledge, | |
| "use_webpage_visit": needs_web_search and ("link" in question_lower or "paper" in question_lower), | |
| "has_file_analysis": has_file_analysis | |
| } | |
| def needs_special_handling(question, tool_selection): | |
| """Check if question needs special handling beyond standard tools.""" | |
| question_lower = question.lower() | |
| # Reverse text questions | |
| if tool_selection.get("is_reverse_text", False): | |
| return True | |
| # Mathematical table analysis | |
| if "table" in question_lower and ("commutative" in question_lower or "operation" in question_lower): | |
| return True | |
| # Grocery/botany questions | |
| if "grocery" in question_lower and "botany" in question_lower: | |
| return True | |
| # File analysis questions | |
| if tool_selection.get("has_file_analysis", False): | |
| return True | |
| return False | |