""" ProVerBs Legal AI - Integrated Landing Page with Rotating Logos Features your custom logos with 60-second rotation """ import gradio as gr from huggingface_hub import InferenceClient import json import os from datetime import datetime from typing import Dict, List, Optional import base64 from pathlib import Path class AILegalChatbotIntegration: """ Integration of your AI Legal Chatbot into Gradio Supports all specialized modes from your original chatbot """ def __init__(self): self.specialized_modes = { "navigation": "Application Navigation Guide", "general": "General Legal Assistant", "document_validation": "Document Validator", "legal_research": "Legal Research Assistant", "etymology": "Legal Etymology Lookup", "case_management": "Case Management Helper", "regulatory_updates": "Regulatory Update Monitor" } def get_mode_system_prompt(self, mode: str) -> str: """Get specialized system prompt based on mode""" prompts = { "navigation": """You are a ProVerBs Application Navigation Guide. Help users navigate the application's features: **Available Features:** - Legal Action Advisor: Get recommendations for seeking justice - Document Analysis: Upload and analyze legal documents - Legal Research: Access comprehensive legal databases - Communications: SMS, email, and phone integration - Document Generation: Create legal documents with AI Guide users to the right features and explain how to use them effectively.""", "general": """You are a General Legal Assistant for ProVerBs Legal AI Platform. Provide accurate legal information while noting that you cannot provide legal advice. Always recommend consulting with a licensed attorney for specific legal matters. Be professional, thorough, and cite relevant legal principles when possible.""", "document_validation": """You are a Document Validator. Analyze legal documents for: - Completeness and required elements - Legal terminology accuracy - Structural integrity - Common issues and red flags Provide specific feedback on document quality and validity.""", "legal_research": """You are a Legal Research Assistant. Help users: - Find relevant case law and precedents - Understand statutes and regulations - Research legal principles and concepts - Cite authoritative legal sources Provide comprehensive research guidance.""", "etymology": """You are a Legal Etymology Expert. Explain the origins and meanings of legal terms: - Latin and historical roots - Evolution of legal terminology - Modern usage and interpretation - Related legal concepts Make legal language accessible and understandable.""", "case_management": """You are a Case Management Helper. Assist with: - Organizing case information - Tracking deadlines and milestones - Managing documents and evidence - Coordinating case activities Provide practical case management advice.""", "regulatory_updates": """You are a Regulatory Update Monitor. Keep users informed about: - Recent legal and regulatory changes - Industry-specific compliance updates - Important legislative developments - Impact analysis of new regulations Provide timely and relevant regulatory information.""" } return prompts.get(mode, prompts["general"]) def format_navigation_response(self, query: str) -> str: """Format response for navigation queries""" query_lower = query.lower() recommendations = [] if any(word in query_lower for word in ["document", "contract", "agreement", "analyze"]): recommendations.append("đ **Document Analysis** - Upload and analyze your documents") if any(word in query_lower for word in ["research", "case", "law", "statute"]): recommendations.append("đ **Legal Research** - Access comprehensive legal databases") if any(word in query_lower for word in ["action", "remedy", "justice", "sue"]): recommendations.append("âī¸ **Legal Action Advisor** - Get recommendations for your situation") if any(word in query_lower for word in ["create", "generate", "template", "form"]): recommendations.append("đ **Document Generation** - Create legal documents with AI") if any(word in query_lower for word in ["communicate", "message", "sms", "email"]): recommendations.append("đ§ **Communications** - Integrated messaging system") if recommendations: return "### I can help you with these features:\n\n" + "\n".join(recommendations) + "\n\n**What would you like to explore?**" return None def respond_with_mode( message, history: list, mode: str, max_tokens: int, temperature: float, top_p: float, hf_token: gr.OAuthToken | None = None ): """Generate AI response based on selected mode""" chatbot_integration = AILegalChatbotIntegration() system_message = chatbot_integration.get_mode_system_prompt(mode) if mode == "navigation": nav_response = chatbot_integration.format_navigation_response(message) if nav_response: yield nav_response return token = hf_token.token if hf_token else None client = InferenceClient(token=token, model="meta-llama/Llama-3.3-70B-Instruct") messages = [{"role": "system", "content": system_message}] for user_msg, assistant_msg in history: if user_msg: messages.append({"role": "user", "content": user_msg}) if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg}) messages.append({"role": "user", "content": message}) response = "" try: for message_chunk in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): if message_chunk.choices and message_chunk.choices[0].delta.content: token = message_chunk.choices[0].delta.content response += token yield response except Exception as e: yield f"Error: {str(e)}" # Custom CSS with rotating logo animation custom_css = """ .gradio-container { max-width: 1200px !important; } .header-section { text-align: center; padding: 40px 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 12px; margin-bottom: 30px; position: relative; } .logo-container { margin-bottom: 20px; display: flex; justify-content: center; align-items: center; } .rotating-logo { width: 150px; height: 150px; border-radius: 50%; object-fit: cover; border: 4px solid rgba(255, 255, 255, 0.8); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); animation: fadeInOut 60s infinite; } @keyframes fadeInOut { 0%, 20% { opacity: 1; } 25%, 45% { opacity: 0; } 50%, 70% { opacity: 1; } 75%, 95% { opacity: 0; } 100% { opacity: 1; } } .logo-1 { animation-delay: 0s; } .logo-2 { animation-delay: 20s; } .logo-3 { animation-delay: 40s; } .header-section h1 { font-size: 3rem; margin-bottom: 10px; font-weight: 700; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); } .mode-selector { font-size: 1.1rem !important; font-weight: 600 !important; padding: 12px !important; } .tab-nav button { font-size: 16px; font-weight: 600; } .feature-card { border: 2px solid #e0e0e0; border-radius: 12px; padding: 20px; margin: 10px; background: #f8f9fa; transition: all 0.3s; } .feature-card:hover { border-color: #667eea; box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); transform: translateY(-2px); } """ # JavaScript for rotating logos rotating_logo_js = """ """ # Create the main application demo = gr.Blocks(title="ProVerBs Legal AI Platform") demo.css = custom_css with demo: # Header with Rotating Logos gr.HTML(f"""
Lawful vs. Legal: Dual Analysis "Adappt'plication"
Professional Legal AI System | Multi-Module Platform | Powered by Advanced AI
âī¸ ProVerBs Legal AI Platform | Version 1.0.0
â ī¸ Disclaimer: This AI provides general legal information only. Consult with a licensed attorney for specific legal matters.
Š 2024 ProVerBs Legal AI. Built with â¤ī¸ for legal professionals worldwide.