import gradio as gr import re # Mock detection logic (replace with your actual model) def detect_ai_human(text): if not text.strip(): return "⚠️ Please enter some text to analyze." # Simple demo logic — replace with your 90.5% accuracy model ai_indicators = ["additionally", "furthermore", "moreover", "in conclusion", "it is important to note", "on the other hand"] score = sum(1 for word in ai_indicators if word in text.lower()) ai_prob = min(95, score * 15 + 10) human_prob = 100 - ai_prob if ai_prob > 60: verdict = "🤖 AI-Generated" color = "#f43f5e" else: verdict = "👤 Human-Written" color = "#10b981" return f"""

📊 Analysis Result

{verdict}
AI Probability
{ai_prob:.1f}%
Human Probability
{human_prob:.1f}%
""" # Custom CSS for modern, beautiful UI custom_css = """ * { margin: 0; padding: 0; box-sizing: border-box; } body { background: linear-gradient(135deg, #0f0c29, #302b63, #24243e); min-height: 100vh; } .gradio-container { max-width: 1000px !important; margin: 0 auto !important; padding: 40px 20px !important; background: transparent !important; } .main-header { text-align: center; margin-bottom: 40px; } .main-header h1 { font-size: 3rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 15px; font-weight: 800; } .main-header p { color: #a0a0b0; font-size: 1.1rem; } .feature-badge { display: inline-flex; gap: 15px; justify-content: center; margin-top: 20px; flex-wrap: wrap; } .badge { background: rgba(102, 126, 234, 0.15); backdrop-filter: blur(10px); padding: 8px 16px; border-radius: 40px; font-size: 0.85rem; color: #a0a0ff; border: 1px solid rgba(102, 126, 234, 0.3); } .input-card { background: rgba(30, 30, 50, 0.6); backdrop-filter: blur(10px); border-radius: 24px; padding: 30px; border: 1px solid rgba(255, 255, 255, 0.1); margin-bottom: 25px; } label { color: #e0e0ff !important; font-weight: 600 !important; font-size: 1rem !important; margin-bottom: 12px !important; } textarea { background: rgba(20, 20, 35, 0.8) !important; border: 1px solid rgba(102, 126, 234, 0.3) !important; border-radius: 16px !important; color: white !important; font-size: 1rem !important; padding: 16px !important; transition: all 0.3s ease !important; } textarea:focus { border-color: #667eea !important; box-shadow: 0 0 20px rgba(102, 126, 234, 0.2) !important; outline: none !important; } button { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border: none !important; border-radius: 40px !important; padding: 12px 32px !important; font-weight: 600 !important; font-size: 1rem !important; color: white !important; transition: all 0.3s ease !important; cursor: pointer !important; } button:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3); } #clear_btn { background: rgba(255, 255, 255, 0.1) !important; backdrop-filter: blur(10px); } #clear_btn:hover { background: rgba(255, 255, 255, 0.2) !important; transform: translateY(-2px); } .output-area { background: rgba(30, 30, 50, 0.6); backdrop-filter: blur(10px); border-radius: 24px; padding: 5px; border: 1px solid rgba(255, 255, 255, 0.1); } .footer { text-align: center; margin-top: 40px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, 0.1); color: #707080; font-size: 0.85rem; } """ # Build the app with gr.Blocks(css=custom_css, title="AI vs Human Text Detector") as demo: # Header gr.HTML("""

🔍 AI vs Human Text Detector

Advanced detection with 90.5% accuracy — Identify AI-generated content instantly

🎯 90.5% Accuracy 💻 Code Detection 📝 Sentence Analysis ⚡ Real-time Results
""") # Main input card with gr.Column(elem_classes=["input-card"]): text_input = gr.Textbox( label="📝 Enter your text", placeholder="Paste or type text here... (e.g., essays, articles, code, emails)", lines=10, show_label=True ) with gr.Row(): clear_btn = gr.Button("🗑️ Clear", elem_id="clear_btn", scale=1) submit_btn = gr.Button("🚀 Analyze Text", variant="primary", scale=2) # Output section with gr.Column(elem_classes=["output-area"]): output_html = gr.HTML(label="") # Footer gr.HTML(""" """) # Wire up buttons submit_btn.click( fn=detect_ai_human, inputs=text_input, outputs=output_html ) clear_btn.click( fn=lambda: ("", ""), inputs=[], outputs=[text_input, output_html] ) if __name__ == "__main__": demo.launch()