import gradio as gr from src.analyzer import EventAnalyzer from ui.format import ResultFormatter from ui.styles import css # Initialize analyzer analyzer = EventAnalyzer() async def process_input(text: str) -> str: """Process input text and return formatted HTML results.""" result = await analyzer.analyze_event(text) return ResultFormatter.format_results(result) # Define example inputs EXAMPLES = [ ["John from Tech Corp. is attending the meeting in Washington, DC tomorrow at 14:30 #tech"], ["Sarah Johnson and Mike Smith from Defense Systems Inc. are conducting training in Norfolk, VA on June 15th #defense #training"], ["Team meeting at headquarters with @commander_smith at 0900 #briefing"], ["Prof. Maria Garcia from MIT will present her research at Stanford University on quantum computing next Thursday at 15:00 PST #science #quantum"], ["Annual cybersecurity conference by InfoSec Systems at Dubai World Trade Centre from May 5-7, featuring keynote speaker Dr. James Wilson #security"], ["Emergency response drill coordinated by FEMA and local authorities in Houston, TX on April 2nd at 0800 hours #emergency #preparedness"] ] # Create custom theme with better alert colors theme = gr.themes.Soft( primary_hue="blue", secondary_hue="neutral", ) # Create Gradio interface demo = gr.Interface( fn=process_input, inputs=[ gr.Textbox( label="Event Text", placeholder="Enter text to analyze (e.g., 'John from Tech Corp. is attending the meeting in Washington, DC tomorrow at 14:30 #tech')", lines=3 ) ], outputs=gr.HTML(), title="Event Analysis System", description="Analyze text to extract entities, assess confidence, and identify key event information with relationship tracking.", css=css, theme=theme, examples=EXAMPLES ) if __name__ == "__main__": demo.launch()