| | import gradio as gr |
| | import uuid |
| | import time |
| | from eldersafe_pipeline import run_eldersafe |
| |
|
| | |
| | SESSION_ID = str(uuid.uuid4()) |
| |
|
| | |
| | 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() |
| |
|
| | |
| | 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", "") |
| |
|
| | |
| | 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() |
| |
|