import gradio as gr import uuid import time from eldersafe_pipeline import run_eldersafe # GLOBAL session state SESSION_ID = str(uuid.uuid4()) # STATS stats = { "total_checks": 0, "last_claim": "", "last_time": 0, } def new_session(): global SESSION_ID, stats SESSION_ID = str(uuid.uuid4()) stats = {"total_checks": 0, "last_claim": "", "last_time": 0} return f"🔄 New session started!\n**Session ID:** {SESSION_ID}", format_stats() def format_stats(): return f""" ### 📊 Analysis Stats - **Total checks this session:** {stats['total_checks']} - **Last Claim:** {stats['last_claim'] or '—'} - **Last Response Time:** {stats['last_time']:.2f} sec - **Session ID:** `{SESSION_ID}` """ async def eldersafe_interface(message: str): if not message.strip(): return "Please paste a WhatsApp / social media message to analyze.", format_stats() start = time.time() # Use current session ID result = await run_eldersafe(message, SESSION_ID) clean_claim = result.get("clean_claim", "") final_report = result.get("final_report", "") memory_context = result.get("memory_context", "") # Update stats stats["total_checks"] += 1 stats["last_claim"] = clean_claim stats["last_time"] = time.time() - start md = f"### 🔍 Viral Message Analyzed\n> *{clean_claim}*\n\n{final_report}\n" if memory_context and "No previous checks" not in str(memory_context): md += "\n---\n**📜 Your Recent Checks:**\n" md += str(memory_context) return md, format_stats() title = "🧓 ElderSafe – Fake News Evidence Mapping Agent" description = """ Paste any WhatsApp or social media forward, and ElderSafe will: - Extract the main claim - Search for evidence - Provide a clear verdict - Explain in simple terms for elderly users """ with gr.Blocks() as demo: gr.Markdown(f"# {title}") gr.Markdown(description) with gr.Row(): new_session_btn = gr.Button("🆕 New Session") stats_box = gr.Markdown(format_stats()) msg = gr.Textbox( label="Paste WhatsApp / Social Media Message", lines=6, placeholder="e.g. NASA has selected an Indian Ayurvedic doctor for space medicine research.", ) output = gr.Markdown(label="Verification Report") analyze_btn = gr.Button("🔎 Analyze Message") analyze_btn.click( fn=eldersafe_interface, inputs=msg, outputs=[output, stats_box], ) new_session_btn.click( fn=new_session, inputs=[], outputs=[output, stats_box], ) if __name__ == "__main__": demo.launch()