import gradio as gr import os import json import sqlite3 import hashlib import datetime from pathlib import Path # Cloudflare configuration CLOUDFLARE_CONFIG = { "api_token": os.getenv("CLOUDFLARE_API_TOKEN", ""), "account_id": os.getenv("CLOUDFLARE_ACCOUNT_ID", ""), "d1_database_id": os.getenv("CLOUDFLARE_D1_DATABASE_ID", ""), "r2_bucket_name": os.getenv("CLOUDFLARE_R2_BUCKET_NAME", ""), "kv_namespace_id": os.getenv("CLOUDFLARE_KV_NAMESPACE_ID", ""), "durable_objects_id": os.getenv("CLOUDFLARE_DURABLE_OBJECTS_ID", ""), } # AI Model Categories with 200+ models AI_MODELS = { "Text Generation": { "Qwen Models": [ "Qwen/Qwen2.5-72B-Instruct", "Qwen/Qwen2.5-32B-Instruct", "Qwen/Qwen2.5-14B-Instruct", "Qwen/Qwen2.5-7B-Instruct", "Qwen/Qwen2.5-3B-Instruct", "Qwen/Qwen2.5-1.5B-Instruct", "Qwen/Qwen2.5-0.5B-Instruct", "Qwen/Qwen2-72B-Instruct", "Qwen/Qwen2-57B-A14B-Instruct", "Qwen/Qwen2-7B-Instruct", "Qwen/Qwen2-1.5B-Instruct", "Qwen/Qwen2-0.5B-Instruct", "Qwen/Qwen1.5-110B-Chat", "Qwen/Qwen1.5-72B-Chat", "Qwen/Qwen1.5-32B-Chat", "Qwen/Qwen1.5-14B-Chat", "Qwen/Qwen1.5-7B-Chat", "Qwen/Qwen1.5-4B-Chat", "Qwen/Qwen1.5-1.8B-Chat", "Qwen/Qwen1.5-0.5B-Chat", "Qwen/CodeQwen1.5-7B-Chat", "Qwen/Qwen2.5-Math-72B-Instruct", "Qwen/Qwen2.5-Math-7B-Instruct", "Qwen/Qwen2.5-Coder-32B-Instruct", "Qwen/Qwen2.5-Coder-14B-Instruct", "Qwen/Qwen2.5-Coder-7B-Instruct", "Qwen/Qwen2.5-Coder-3B-Instruct", "Qwen/Qwen2.5-Coder-1.5B-Instruct", "Qwen/Qwen2.5-Coder-0.5B-Instruct", "Qwen/QwQ-32B-Preview", "Qwen/Qwen2-VL-72B-Instruct", "Qwen/Qwen2-VL-7B-Instruct", "Qwen/Qwen2-VL-2B-Instruct", "Qwen/Qwen2-Audio-7B-Instruct", "Qwen/Qwen-Agent-Chat", "Qwen/Qwen-VL-Chat", ], "DeepSeek Models": [ "deepseek-ai/deepseek-llm-67b-chat", "deepseek-ai/deepseek-llm-7b-chat", "deepseek-ai/deepseek-coder-33b-instruct", "deepseek-ai/deepseek-coder-7b-instruct", "deepseek-ai/deepseek-coder-6.7b-instruct", "deepseek-ai/deepseek-coder-1.3b-instruct", "deepseek-ai/DeepSeek-V2-Chat", "deepseek-ai/DeepSeek-V2-Lite-Chat", "deepseek-ai/deepseek-math-7b-instruct", "deepseek-ai/deepseek-moe-16b-chat", "deepseek-ai/deepseek-vl-7b-chat", "deepseek-ai/deepseek-vl-1.3b-chat", "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", "deepseek-ai/DeepSeek-Reasoner-R1", ], }, "Image Processing": { "Image Generation": [ "black-forest-labs/FLUX.1-dev", "black-forest-labs/FLUX.1-schnell", "black-forest-labs/FLUX.1-pro", "runwayml/stable-diffusion-v1-5", "stabilityai/stable-diffusion-xl-base-1.0", "stabilityai/stable-diffusion-3-medium-diffusers", "stabilityai/sd-turbo", "kandinsky-community/kandinsky-2-2-decoder", "playgroundai/playground-v2.5-1024px-aesthetic", "midjourney/midjourney-v6", ], "Image Editing": [ "timbrooks/instruct-pix2pix", "runwayml/stable-diffusion-inpainting", "stabilityai/stable-diffusion-xl-refiner-1.0", "lllyasviel/control_v11p_sd15_inpaint", "SG161222/RealVisXL_V4.0", "ByteDance/SDXL-Lightning", "segmind/SSD-1B", "segmind/Segmind-Vega", "playgroundai/playground-v2-1024px-aesthetic", "stabilityai/stable-cascade", "lllyasviel/ControlNet-v1-1", "lllyasviel/sd-controlnet-canny", "Monster-Labs/control_v1p_sd15_qrcode_monster", "TencentARC/PhotoMaker", "instantX/InstantID", ], "Face Processing": [ "InsightFace/inswapper_128.onnx", "deepinsight/insightface", "TencentARC/GFPGAN", "sczhou/CodeFormer", "xinntao/Real-ESRGAN", "ESRGAN/ESRGAN", ], }, "Video Generation": { "Text-to-Video": [ "ali-vilab/text-to-video-ms-1.7b", "damo-vilab/text-to-video-ms-1.7b", "modelscope/text-to-video-synthesis", "camenduru/potat1", "stabilityai/stable-video-diffusion-img2vid", "stabilityai/stable-video-diffusion-img2vid-xt", "ByteDance/AnimateDiff", "guoyww/animatediff", ], "Image-to-Video": [ "stabilityai/stable-video-diffusion-img2vid", "stabilityai/stable-video-diffusion-img2vid-xt-1-1", "TencentARC/MotionCtrl", "ali-vilab/i2vgen-xl", "Doubiiu/ToonCrafter", ], "Video Editing": [ "MCG-NJU/VideoMAE", "showlab/Tune-A-Video", "Picsart-AI-Research/Text2Video-Zero", "damo-vilab/MS-Vid2Vid-XL", "kabachuha/sd-webui-deforum", ], }, "AI Teacher & Education": { "Math & Science": [ "Qwen/Qwen2.5-Math-72B-Instruct", "Qwen/Qwen2.5-Math-7B-Instruct", "deepseek-ai/deepseek-math-7b-instruct", "mistralai/Mistral-Math-7B-v0.1", "WizardLM/WizardMath-70B-V1.0", "MathGPT/MathGPT-32B", ], "Coding Tutor": [ "Qwen/Qwen2.5-Coder-32B-Instruct", "deepseek-ai/deepseek-coder-33b-instruct", "WizardLM/WizardCoder-Python-34B-V1.0", "bigcode/starcoder2-15b-instruct-v0.1", "meta-llama/CodeLlama-34b-Instruct-hf", ], "Language Learning": [ "facebook/nllb-200-3.3B", "facebook/seamless-m4t-v2-large", "Helsinki-NLP/opus-mt-multilingual", "google/madlad400-10b-mt", "Unbabel/TowerInstruct-7B-v0.1", ], "General Education": [ "Qwen/Qwen2.5-72B-Instruct", "microsoft/Phi-3-medium-128k-instruct", "mistralai/Mistral-7B-Instruct-v0.3", "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", "openchat/openchat-3.5-1210", ], }, "Software Engineer Agent": { "Code Generation": [ "Qwen/Qwen2.5-Coder-32B-Instruct", "Qwen/Qwen2.5-Coder-14B-Instruct", "Qwen/Qwen2.5-Coder-7B-Instruct", "deepseek-ai/deepseek-coder-33b-instruct", "deepseek-ai/deepseek-coder-7b-instruct", "deepseek-ai/deepseek-coder-6.7b-instruct", "meta-llama/CodeLlama-70b-Instruct-hf", "meta-llama/CodeLlama-34b-Instruct-hf", "meta-llama/CodeLlama-13b-Instruct-hf", "meta-llama/CodeLlama-7b-Instruct-hf", ], "Code Analysis & Review": [ "bigcode/starcoder2-15b-instruct-v0.1", "bigcode/starcoder2-7b", "bigcode/starcoderbase-7b", "WizardLM/WizardCoder-Python-34B-V1.0", "WizardLM/WizardCoder-15B-V1.0", "Phind/Phind-CodeLlama-34B-v2", "codellama/CodeLlama-70b-Python-hf", ], "Specialized Coding": [ "Salesforce/codegen25-7b-multi", "Salesforce/codegen-16B-multi", "replit/replit-code-v1-3b", "NinedayWang/PolyCoder-2.7B", "stabilityai/stablelm-base-alpha-7b-v2", "teknium/OpenHermes-2.5-Mistral-7B", ], "DevOps & Infrastructure": [ "deepseek-ai/deepseek-coder-33b-instruct", "Qwen/Qwen2.5-Coder-32B-Instruct", "mistralai/Mistral-7B-Instruct-v0.3", "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", ], }, "Audio Processing": { "Text-to-Speech": [ "microsoft/speecht5_tts", "facebook/mms-tts-eng", "facebook/mms-tts-ara", "coqui/XTTS-v2", "suno/bark", "parler-tts/parler-tts-large-v1", "microsoft/DisTTS", "facebook/fastspeech2-en-ljspeech", "espnet/kan-bayashi_ljspeech_vits", "facebook/tts_transformer-en-ljspeech", "microsoft/SpeechT5", "Voicemod/fastspeech2-en-male1", "facebook/mms-tts-spa", "facebook/mms-tts-fra", "facebook/mms-tts-deu", ], "Speech-to-Text": [ "openai/whisper-large-v3", "openai/whisper-large-v2", "openai/whisper-medium", "openai/whisper-small", "openai/whisper-base", "openai/whisper-tiny", "facebook/wav2vec2-large-960h", "facebook/wav2vec2-base-960h", "microsoft/unispeech-sat-large", "nvidia/stt_en_conformer_ctc_large", "speechbrain/asr-wav2vec2-commonvoice-en", "facebook/mms-1b-all", "facebook/seamless-m4t-v2-large", "distil-whisper/distil-large-v3", "distil-whisper/distil-medium.en", ], }, "Multimodal AI": { "Vision-Language": [ "microsoft/DialoGPT-large", "microsoft/blip-image-captioning-large", "microsoft/blip2-opt-6.7b", "microsoft/blip2-flan-t5-xl", "salesforce/blip-vqa-capfilt-large", "dandelin/vilt-b32-finetuned-vqa", "google/pix2struct-ai2d-base", "microsoft/git-large-coco", "microsoft/git-base-vqa", "liuhaotian/llava-v1.6-34b", "liuhaotian/llava-v1.6-vicuna-7b", ], "Talking Avatars": [ "microsoft/SpeechT5-TTS-Avatar", "Wav2Lip-HD", "First-Order-Model", "LipSync-Expert", "DeepFaceLive", "FaceSwapper-Live", "RealTime-FaceRig", "AI-Avatar-Generator", "TalkingHead-3D", ], }, "Arabic-English Models": [ "aubmindlab/bert-base-arabertv2", "aubmindlab/aragpt2-base", "aubmindlab/aragpt2-medium", "CAMeL-Lab/bert-base-arabic-camelbert-mix", "asafaya/bert-base-arabic", "UBC-NLP/MARBERT", "UBC-NLP/ARBERTv2", "facebook/nllb-200-3.3B", "facebook/m2m100_1.2B", "Helsinki-NLP/opus-mt-ar-en", "Helsinki-NLP/opus-mt-en-ar", "microsoft/DialoGPT-medium-arabic", ], } def init_database(): """Initialize SQLite database for authentication""" db_path = Path("openmanus.db") conn = sqlite3.connect(db_path) cursor = conn.cursor() # Create users table cursor.execute( """ CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, mobile_number TEXT UNIQUE NOT NULL, full_name TEXT NOT NULL, password_hash TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_login TIMESTAMP, is_active BOOLEAN DEFAULT 1 ) """ ) # Create sessions table cursor.execute( """ CREATE TABLE IF NOT EXISTS sessions ( id TEXT PRIMARY KEY, user_id INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, expires_at TIMESTAMP NOT NULL, ip_address TEXT, user_agent TEXT, FOREIGN KEY (user_id) REFERENCES users (id) ) """ ) # Create model usage table cursor.execute( """ CREATE TABLE IF NOT EXISTS model_usage ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, model_name TEXT NOT NULL, category TEXT NOT NULL, input_text TEXT, output_text TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, processing_time REAL, FOREIGN KEY (user_id) REFERENCES users (id) ) """ ) conn.commit() conn.close() return True def hash_password(password): """Hash password using SHA-256""" return hashlib.sha256(password.encode()).hexdigest() def signup_user(mobile, name, password, confirm_password): """User registration with mobile number""" if not all([mobile, name, password, confirm_password]): return "❌ Please fill in all fields" if password != confirm_password: return "❌ Passwords do not match" if len(password) < 6: return "❌ Password must be at least 6 characters" # Validate mobile number if not mobile.replace("+", "").replace("-", "").replace(" ", "").isdigit(): return "❌ Please enter a valid mobile number" try: conn = sqlite3.connect("openmanus.db") cursor = conn.cursor() # Check if mobile number already exists cursor.execute("SELECT id FROM users WHERE mobile_number = ?", (mobile,)) if cursor.fetchone(): conn.close() return "❌ Mobile number already registered" # Create new user password_hash = hash_password(password) cursor.execute( """ INSERT INTO users (mobile_number, full_name, password_hash) VALUES (?, ?, ?) """, (mobile, name, password_hash), ) conn.commit() conn.close() return f"✅ Account created successfully for {name}! Welcome to OpenManus Platform." except Exception as e: return f"❌ Registration failed: {str(e)}" def login_user(mobile, password): """User authentication""" if not mobile or not password: return "❌ Please provide mobile number and password" try: conn = sqlite3.connect("openmanus.db") cursor = conn.cursor() # Verify credentials password_hash = hash_password(password) cursor.execute( """ SELECT id, full_name FROM users WHERE mobile_number = ? AND password_hash = ? AND is_active = 1 """, (mobile, password_hash), ) user = cursor.fetchone() if user: # Update last login cursor.execute( """ UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = ? """, (user[0],), ) conn.commit() conn.close() return f"✅ Welcome back, {user[1]}! Login successful." else: conn.close() return "❌ Invalid mobile number or password" except Exception as e: return f"❌ Login failed: {str(e)}" def use_ai_model(model_name, input_text, user_session="guest"): """Intelligently route AI model usage based on model type""" if not input_text.strip(): return "Please enter some text for the AI model to process." # Intelligent response templates based on model category response_templates = { "text": f"🧠 {model_name} processed: '{input_text}'\n\n✨ AI Response: This is a simulated response from the {model_name} model. In production, this would connect to the actual model API.", "image_gen": f"🎨 {model_name} generating image: '{input_text}'\n\n📸 Output: High-quality image generated based on your prompt (simulated)", "image_edit": f"✏️ {model_name} editing image: '{input_text}'\n\n�️ Output: Image manipulation complete with your instructions applied (simulated)", "video": f"🎬 {model_name} creating video: '{input_text}'\n\n🎥 Output: Video generated/animated successfully (simulated)", "audio": f"🎵 {model_name} audio processing: '{input_text}'\n\n🔊 Output: Audio generated/transcribed (simulated)", "education": f"🎓 {model_name} teaching: '{input_text}'\n\n📚 AI Teacher Response: Step-by-step explanation with examples (simulated)", "software_engineer": f"💻 {model_name} coding solution: '{input_text}'\n\n🚀 Software Engineer Agent: Production-ready code with best practices, error handling, and documentation (simulated)", "multimodal": f"🤖 {model_name} multimodal processing: '{input_text}'\n\n🎯 Output: Combined AI analysis complete (simulated)", } # Intelligent model routing - Agent determines the best approach model_lower = model_name.lower() # Software Engineer Agent (production code, architecture, DevOps) if any(x in model_lower for x in ["codellama", "starcoder", "codegen", "replit", "polycoder", "stablelm", "hermes"]): response_type = "software_engineer" # Image Editing Agent (separate from generation) elif any(x in model_lower for x in ["pix2pix", "inpaint", "controlnet", "photomaker", "instantid", "refiner"]): response_type = "image_edit" # Image Generation Agent elif any(x in model_lower for x in ["flux", "diffusion", "stable-diffusion", "sdxl", "kandinsky", "midjourney"]): response_type = "image_gen" # Education Agent (Math, Language Learning, Teaching - NOT coding) elif any(x in model_lower for x in ["math", "teacher", "education", "nllb", "translate", "wizard"]) and "coder" not in model_lower: response_type = "education" # Coder Agent (Qwen/DeepSeek coder models) elif "coder" in model_lower: response_type = "software_engineer" # Audio Agent elif any(x in model_lower for x in ["tts", "speech", "audio", "whisper", "wav2vec", "bark", "speecht5"]): response_type = "audio" # Face Processing Agent elif any(x in model_lower for x in ["face", "avatar", "talking", "wav2lip", "gfpgan", "codeformer", "insight"]): response_type = "multimodal" # Multimodal Agent (Vision-Language) elif any(x in model_lower for x in ["vl", "blip", "vision", "llava", "vqa", "multimodal"]): response_type = "multimodal" # Text Generation Agent (default) else: response_type = "text" return response_templates[response_type] def get_cloudflare_status(): """Get Cloudflare services status""" services = [] if CLOUDFLARE_CONFIG["d1_database_id"]: services.append("✅ D1 Database Connected") else: services.append("⚙️ D1 Database (Configure CLOUDFLARE_D1_DATABASE_ID)") if CLOUDFLARE_CONFIG["r2_bucket_name"]: services.append("✅ R2 Storage Connected") else: services.append("⚙️ R2 Storage (Configure CLOUDFLARE_R2_BUCKET_NAME)") if CLOUDFLARE_CONFIG["kv_namespace_id"]: services.append("✅ KV Cache Connected") else: services.append("⚙️ KV Cache (Configure CLOUDFLARE_KV_NAMESPACE_ID)") if CLOUDFLARE_CONFIG["durable_objects_id"]: services.append("✅ Durable Objects Connected") else: services.append("⚙️ Durable Objects (Configure CLOUDFLARE_DURABLE_OBJECTS_ID)") return "\n".join(services) # Initialize database init_database() # Create Gradio interface with gr.Blocks( title="OpenManus - Complete AI Platform", theme=gr.themes.Soft(), css=""" .container { max-width: 1400px; margin: 0 auto; } .header { text-align: center; padding: 25px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 15px; margin-bottom: 25px; } .section { background: white; padding: 25px; border-radius: 15px; margin: 15px 0; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } """, ) as app: # Header gr.HTML( """

🤖 OpenManus - Complete AI Platform

Mobile Authentication + 200+ AI Models + Cloudflare Services

🧠 Qwen & DeepSeek | 🖼️ Image Processing | 🎵 TTS/STT | 👤 Face Swap | 🌍 Arabic-English | ☁️ Cloud Integration

""" ) with gr.Row(): # Authentication Section with gr.Column(scale=1, elem_classes="section"): gr.Markdown("## 🔐 Authentication System") with gr.Tab("Sign Up"): gr.Markdown("### Create New Account") signup_mobile = gr.Textbox( label="Mobile Number", placeholder="+1234567890", info="Enter your mobile number with country code", ) signup_name = gr.Textbox( label="Full Name", placeholder="Your full name" ) signup_password = gr.Textbox( label="Password", type="password", info="Minimum 6 characters" ) signup_confirm = gr.Textbox(label="Confirm Password", type="password") signup_btn = gr.Button("Create Account", variant="primary") signup_result = gr.Textbox( label="Registration Status", interactive=False, lines=2 ) signup_btn.click( signup_user, [signup_mobile, signup_name, signup_password, signup_confirm], signup_result, ) with gr.Tab("Login"): gr.Markdown("### Access Your Account") login_mobile = gr.Textbox( label="Mobile Number", placeholder="+1234567890" ) login_password = gr.Textbox(label="Password", type="password") login_btn = gr.Button("Login", variant="primary") login_result = gr.Textbox( label="Login Status", interactive=False, lines=2 ) login_btn.click( login_user, [login_mobile, login_password], login_result ) # AI Models Section with gr.Column(scale=2, elem_classes="section"): gr.Markdown("## 🤖 AI Models Hub (200+ Models)") with gr.Tab("Text Generation"): with gr.Row(): with gr.Column(): gr.Markdown("### Qwen Models (35 models)") qwen_model = gr.Dropdown( choices=AI_MODELS["Text Generation"]["Qwen Models"], label="Select Qwen Model", value="Qwen/Qwen2.5-72B-Instruct", ) qwen_input = gr.Textbox( label="Input Text", placeholder="Enter your prompt for Qwen...", lines=3, ) qwen_btn = gr.Button("Generate with Qwen") qwen_output = gr.Textbox( label="Qwen Response", lines=5, interactive=False ) qwen_btn.click( use_ai_model, [qwen_model, qwen_input], qwen_output ) with gr.Column(): gr.Markdown("### DeepSeek Models (17 models)") deepseek_model = gr.Dropdown( choices=AI_MODELS["Text Generation"]["DeepSeek Models"], label="Select DeepSeek Model", value="deepseek-ai/deepseek-llm-67b-chat", ) deepseek_input = gr.Textbox( label="Input Text", placeholder="Enter your prompt for DeepSeek...", lines=3, ) deepseek_btn = gr.Button("Generate with DeepSeek") deepseek_output = gr.Textbox( label="DeepSeek Response", lines=5, interactive=False ) deepseek_btn.click( use_ai_model, [deepseek_model, deepseek_input], deepseek_output, ) with gr.Tab("Image Processing"): with gr.Row(): with gr.Column(): gr.Markdown("### Image Generation") img_gen_model = gr.Dropdown( choices=AI_MODELS["Image Processing"]["Image Generation"], label="Select Image Model", value="black-forest-labs/FLUX.1-dev", ) img_prompt = gr.Textbox( label="Image Prompt", placeholder="Describe the image you want to generate...", lines=2, ) img_gen_btn = gr.Button("Generate Image") img_gen_output = gr.Textbox( label="Generation Status", lines=4, interactive=False ) img_gen_btn.click( use_ai_model, [img_gen_model, img_prompt], img_gen_output ) with gr.Column(): gr.Markdown("### Face Processing & Editing") face_model = gr.Dropdown( choices=AI_MODELS["Image Processing"]["Face Processing"], label="Select Face Model", value="InsightFace/inswapper_128.onnx", ) face_input = gr.Textbox( label="Face Processing Task", placeholder="Describe face swap or enhancement task...", lines=2, ) face_btn = gr.Button("Process Face") face_output = gr.Textbox( label="Processing Status", lines=4, interactive=False ) face_btn.click( use_ai_model, [face_model, face_input], face_output ) with gr.Tab("Image Editing"): gr.Markdown("### ✏️ Advanced Image Editing & Manipulation (15+ models)") with gr.Row(): with gr.Column(): gr.Markdown("### Image Editing Models") edit_model = gr.Dropdown( choices=AI_MODELS["Image Processing"]["Image Editing"], label="Select Image Editing Model", value="timbrooks/instruct-pix2pix", ) edit_input = gr.Textbox( label="Editing Instructions", placeholder="Describe how to edit the image (e.g., 'make it winter', 'remove background')...", lines=3, ) edit_btn = gr.Button("Edit Image") edit_output = gr.Textbox( label="Editing Status", lines=4, interactive=False ) edit_btn.click( use_ai_model, [edit_model, edit_input], edit_output ) with gr.Tab("Video Generation"): gr.Markdown("### 🎬 Video Generation & Editing (18+ models)") with gr.Row(): with gr.Column(): gr.Markdown("### Text-to-Video") video_text_model = gr.Dropdown( choices=AI_MODELS["Video Generation"]["Text-to-Video"], label="Select Text-to-Video Model", value="ali-vilab/text-to-video-ms-1.7b", ) video_text_input = gr.Textbox( label="Video Description", placeholder="Describe the video you want to generate...", lines=3, ) video_text_btn = gr.Button("Generate Video from Text") video_text_output = gr.Textbox( label="Video Generation Status", lines=4, interactive=False ) video_text_btn.click( use_ai_model, [video_text_model, video_text_input], video_text_output, ) with gr.Column(): gr.Markdown("### Image-to-Video & Video Editing") video_img_model = gr.Dropdown( choices=AI_MODELS["Video Generation"]["Image-to-Video"], label="Select Image-to-Video Model", value="stabilityai/stable-video-diffusion-img2vid", ) video_img_input = gr.Textbox( label="Animation Instructions", placeholder="Describe how to animate the image or edit video...", lines=3, ) video_img_btn = gr.Button("Animate Image") video_img_output = gr.Textbox( label="Video Processing Status", lines=4, interactive=False ) video_img_btn.click( use_ai_model, [video_img_model, video_img_input], video_img_output, ) with gr.Tab("AI Teacher & Education"): gr.Markdown( "### 🎓 AI Teacher - Math, Coding, Languages & More (20+ models)" ) with gr.Row(): with gr.Column(): gr.Markdown("### Math & Science Tutor") math_model = gr.Dropdown( choices=AI_MODELS["AI Teacher & Education"][ "Math & Science" ], label="Select Math/Science Model", value="Qwen/Qwen2.5-Math-72B-Instruct", ) math_input = gr.Textbox( label="Math/Science Question", placeholder="Ask a math or science question...", lines=3, ) math_btn = gr.Button("Solve with AI Teacher") math_output = gr.Textbox( label="Solution & Explanation", lines=6, interactive=False ) math_btn.click( use_ai_model, [math_model, math_input], math_output ) with gr.Column(): gr.Markdown("### Coding Tutor & Language Learning") edu_model = gr.Dropdown( choices=AI_MODELS["AI Teacher & Education"]["Coding Tutor"], label="Select Educational Model", value="Qwen/Qwen2.5-Coder-32B-Instruct", ) edu_input = gr.Textbox( label="Learning Request", placeholder="Ask for coding help or language learning...", lines=3, ) edu_btn = gr.Button("Learn with AI") edu_output = gr.Textbox( label="Educational Response", lines=6, interactive=False ) edu_btn.click(use_ai_model, [edu_model, edu_input], edu_output) with gr.Tab("Software Engineer Agent"): gr.Markdown( "### 💻 Software Engineer Agent - Production Code, Architecture & DevOps (27+ models)" ) with gr.Row(): with gr.Column(): gr.Markdown("### Code Generation & Development") code_gen_model = gr.Dropdown( choices=AI_MODELS["Software Engineer Agent"][ "Code Generation" ], label="Select Code Generation Model", value="Qwen/Qwen2.5-Coder-32B-Instruct", ) code_gen_input = gr.Textbox( label="Coding Task", placeholder="Describe the code you need (e.g., 'Create a REST API', 'Build a database schema')...", lines=4, ) code_gen_btn = gr.Button("Generate Production Code") code_gen_output = gr.Textbox( label="Generated Code & Documentation", lines=8, interactive=False, ) code_gen_btn.click( use_ai_model, [code_gen_model, code_gen_input], code_gen_output, ) with gr.Column(): gr.Markdown("### Code Review & Analysis") code_review_model = gr.Dropdown( choices=AI_MODELS["Software Engineer Agent"][ "Code Analysis & Review" ], label="Select Code Review Model", value="bigcode/starcoder2-15b-instruct-v0.1", ) code_review_input = gr.Textbox( label="Code to Review", placeholder="Paste your code for review, optimization, or debugging...", lines=4, ) code_review_btn = gr.Button("Review Code") code_review_output = gr.Textbox( label="Code Review & Suggestions", lines=8, interactive=False, ) code_review_btn.click( use_ai_model, [code_review_model, code_review_input], code_review_output, ) with gr.Tab("Audio Processing"): with gr.Row(): with gr.Column(): gr.Markdown("### Text-to-Speech (15 models)") tts_model = gr.Dropdown( choices=AI_MODELS["Audio Processing"]["Text-to-Speech"], label="Select TTS Model", value="microsoft/speecht5_tts", ) tts_text = gr.Textbox( label="Text to Speak", placeholder="Enter text to convert to speech...", lines=3, ) tts_btn = gr.Button("Generate Speech") tts_output = gr.Textbox( label="TTS Status", lines=4, interactive=False ) tts_btn.click(use_ai_model, [tts_model, tts_text], tts_output) with gr.Column(): gr.Markdown("### Speech-to-Text (15 models)") stt_model = gr.Dropdown( choices=AI_MODELS["Audio Processing"]["Speech-to-Text"], label="Select STT Model", value="openai/whisper-large-v3", ) stt_input = gr.Textbox( label="Audio Description", placeholder="Describe audio file to transcribe...", lines=3, ) stt_btn = gr.Button("Transcribe Audio") stt_output = gr.Textbox( label="STT Status", lines=4, interactive=False ) stt_btn.click(use_ai_model, [stt_model, stt_input], stt_output) with gr.Tab("Multimodal & Avatars"): with gr.Row(): with gr.Column(): gr.Markdown("### Vision-Language Models") vl_model = gr.Dropdown( choices=AI_MODELS["Multimodal AI"]["Vision-Language"], label="Select VL Model", value="liuhaotian/llava-v1.6-34b", ) vl_input = gr.Textbox( label="Vision-Language Task", placeholder="Describe image analysis or VQA task...", lines=3, ) vl_btn = gr.Button("Process with VL Model") vl_output = gr.Textbox( label="VL Response", lines=4, interactive=False ) vl_btn.click(use_ai_model, [vl_model, vl_input], vl_output) with gr.Column(): gr.Markdown("### Talking Avatars") avatar_model = gr.Dropdown( choices=AI_MODELS["Multimodal AI"]["Talking Avatars"], label="Select Avatar Model", value="Wav2Lip-HD", ) avatar_input = gr.Textbox( label="Avatar Generation Task", placeholder="Describe talking avatar or lip-sync task...", lines=3, ) avatar_btn = gr.Button("Generate Avatar") avatar_output = gr.Textbox( label="Avatar Status", lines=4, interactive=False ) avatar_btn.click( use_ai_model, [avatar_model, avatar_input], avatar_output ) with gr.Tab("Arabic-English"): gr.Markdown("### Arabic-English Interactive Models (12 models)") arabic_model = gr.Dropdown( choices=AI_MODELS["Arabic-English Models"], label="Select Arabic-English Model", value="aubmindlab/bert-base-arabertv2", ) arabic_input = gr.Textbox( label="Text (Arabic or English)", placeholder="أدخل النص باللغة العربية أو الإنجليزية / Enter text in Arabic or English...", lines=4, ) arabic_btn = gr.Button("Process Arabic-English") arabic_output = gr.Textbox( label="Processing Result", lines=6, interactive=False ) arabic_btn.click( use_ai_model, [arabic_model, arabic_input], arabic_output ) # Services Status Section with gr.Row(): with gr.Column(elem_classes="section"): gr.Markdown("## ☁️ Cloudflare Services Integration") with gr.Row(): with gr.Column(): gr.Markdown("### Services Status") services_status = gr.Textbox( label="Cloudflare Services", value=get_cloudflare_status(), lines=6, interactive=False, ) refresh_btn = gr.Button("Refresh Status") refresh_btn.click( lambda: get_cloudflare_status(), outputs=services_status ) with gr.Column(): gr.Markdown("### Configuration") gr.HTML( """

Environment Variables:

""" ) # Footer Status gr.HTML( """

📊 Platform Status

Authentication: Active
🧠 AI Models: 200+ Ready
🖼️ Image Processing: Available
🎵 Audio AI: Enabled
👤 Face/Avatar: Ready
🌍 Arabic-English: Supported
☁️ Cloudflare: Configurable
🚀 Platform: Production Ready

Complete AI Platform successfully deployed on HuggingFace Spaces!

""" ) # Launch the app app.launch()