Spaces:
Running
Running
from typing import List, Dict | |
import re | |
from langchain.tools import BaseTool, StructuredTool | |
from langchain.pydantic_v1 import BaseModel, Field | |
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 search_uae_legal_database(query: str) -> str: | |
"""Search UAE legal databases for laws, regulations, and precedents.""" | |
return f"Found relevant UAE legal information for: {query}" | |
def translate_legal_term(term: str) -> str: | |
"""Translate legal terms between Arabic and English.""" | |
return f"Translation for: {term}" | |
def search_uae_case_law(query: str) -> str: | |
"""Search UAE case law and legal precedents.""" | |
return f"Found relevant UAE case law for: {query}" | |
def create_uae_legal_tools() -> List[BaseTool]: | |
"""Create tools for UAE legal research.""" | |
return [ | |
StructuredTool.from_function( | |
func=search_uae_legal_database, | |
name="UAE Legal Database Search", | |
description="Search UAE legal databases for laws, regulations, and precedents" | |
), | |
StructuredTool.from_function( | |
func=translate_legal_term, | |
name="Arabic Legal Term Translation", | |
description="Translate legal terms between Arabic and English" | |
), | |
StructuredTool.from_function( | |
func=search_uae_case_law, | |
name="UAE Case Law Search", | |
description="Search UAE case law and legal precedents" | |
) | |
] | |
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 |