Spaces:
Running
Running
from typing import List, Dict | |
import re | |
from langchain.tools import BaseTool | |
from crewai.tools import BaseTool as CrewAITool | |
from config import UAE_LEGAL_DOMAINS | |
def is_arabic(text: str) -> bool: | |
"""Check if the text contains Arabic characters.""" | |
arabic_pattern = re.compile('[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF]+') | |
return bool(arabic_pattern.search(text)) | |
def create_uae_legal_tools() -> List[CrewAITool]: | |
"""Create tools for UAE legal research.""" | |
class UAELegalDatabaseTool(CrewAITool): | |
name: str = "UAE Legal Database Search" | |
description: str = "Search UAE legal databases for laws, regulations, and precedents" | |
def _run(self, query: str) -> str: | |
return f"Found relevant UAE legal information for: {query}" | |
class ArabicLegalTranslationTool(CrewAITool): | |
name: str = "Arabic Legal Term Translation" | |
description: str = "Translate legal terms between Arabic and English" | |
def _run(self, term: str) -> str: | |
return f"Translation for: {term}" | |
class UAECaseLawTool(CrewAITool): | |
name: str = "UAE Case Law Search" | |
description: str = "Search UAE case law and legal precedents" | |
def _run(self, query: str) -> str: | |
return f"Found relevant UAE case law for: {query}" | |
return [ | |
UAELegalDatabaseTool(), | |
ArabicLegalTranslationTool(), | |
UAECaseLawTool() | |
] | |
def search_uae_legal_database(query: str) -> str: | |
"""Simulate searching UAE legal databases.""" | |
return f"Found relevant UAE legal information for: {query}" | |
def translate_legal_term(term: str) -> str: | |
"""Simulate legal term translation.""" | |
return f"Translation for: {term}" | |
def search_uae_case_law(query: str) -> str: | |
"""Simulate searching UAE case law.""" | |
return f"Found relevant UAE case law for: {query}" | |
def format_legal_response(response: str, language: str = 'ar') -> str: | |
"""Format legal responses with proper styling and language direction.""" | |
if language == 'ar': | |
return f'<div dir="rtl">{response}</div>' | |
return response |