Spaces:
Sleeping
Sleeping
File size: 5,131 Bytes
0eb59fc 11e4aa2 2762feb 5431ef4 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 0fe887d 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 2762feb 11e4aa2 92bff3a 11e4aa2 92bff3a 11e4aa2 92bff3a 11e4aa2 2762feb 11e4aa2 2762feb 92bff3a 2762feb 11e4aa2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# FILE: main_web.py (Hugging Face Demo)
import gradio as gr
import asyncio
import logging
import os
import sys
from typing import Optional, List, Dict, Any
# --- Basic Setup ---
APP_TITLE = "ZOTHEOS - Ethical Fusion AI"
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger("ZOTHEOS_Interface_HF")
def get_asset_path(filename: str) -> str:
# In Hugging Face Spaces, assets are in the root or /assets
return filename if os.path.exists(filename) else os.path.join('assets', filename)
logo_path_verified = get_asset_path("zotheos_logo.png")
GUMROAD_LINK = "https://zotheos.gumroad.com/l/jibfv"
# --- Core Logic Imports ---
try:
from modules.main_fusion_public import MainFusionPublic
except ImportError:
MainFusionPublic = None
ai_system = MainFusionPublic() if MainFusionPublic else None
# --- ✅ DEFINITIVE "OBSIDIAN" CSS THEME ---
zotheos_web_css = """
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;600;700&display=swap');
body { background: linear-gradient(135deg, #000000, #1c1c1c) !important; font-family: 'Inter', sans-serif !important; }
.gradio-container { background: transparent !important; max-width: 900px !important; }
#header_logo img { max-height: 70px !important; filter: brightness(0) invert(1) !important; }
#header_subtitle { font-family: 'Bebas Neue', cursive !important; font-size: 1.8rem !important; text-transform: uppercase !important; letter-spacing: 2px !important; }
#header_tagline { color: #a0a0a0 !important; margin-top: -10px !important; margin-bottom: 1.5rem !important; }
.gradio-textbox textarea { font-size: 1.1rem !important; }
.result-box { background-color: rgba(18, 18, 18, 0.8) !important; border: 1px solid #333 !important; border-radius: 12px !important; padding: 1.5rem 2rem !important; }
.result-box h2 { font-family: 'Bebas Neue', cursive !important; font-size: 1.5rem !important; border-bottom: 1px solid #333; padding-bottom: 0.75rem; margin-bottom: 1rem; }
.cta-button { background: #FFFFFF !important; color: #000000 !important; font-weight: bold !important; }
.cta-button:hover { background: #e0e0e0 !important; }
footer { display: none !important; }
"""
# --- Build Gradio Interface ---
def build_interface():
zotheos_theme = gr.themes.Base(primary_hue=gr.themes.colors.neutral, secondary_hue=gr.themes.colors.neutral).set(
button_primary_background_fill="white", button_primary_text_color="black"
)
with gr.Blocks(theme=zotheos_theme, css=zotheos_web_css, title=APP_TITLE) as demo:
with gr.Column(elem_classes="gradio-container"):
# --- ✅ UPGRADED HEADER WITH CALL TO ACTION ---
gr.Image(value=logo_path_verified, elem_id="header_logo", show_label=False, container=False, interactive=False)
gr.Markdown("Ethical Fusion AI for Synthesized Intelligence", elem_id="header_subtitle")
gr.Markdown("Fusing perspectives for deeper truth.", elem_id="header_tagline")
with gr.Accordion("🔥 Get the Full Offline Desktop Version", open=True):
gr.Markdown("This web demo uses smaller, slower models. For the full-power, GPU-accelerated, 100% private experience, download the ZOTHEOS Public Beta for your Windows PC.")
download_button = gr.Button("Download Full Version on Gumroad", link=GUMROAD_LINK, elem_classes="cta-button")
gr.Markdown("---") # Separator
# --- Main Interaction Area ---
query_input = gr.Textbox(label="Your Inquiry:", placeholder="e.g., Analyze the ethical implications of AI in art...", lines=6)
submit_button = gr.Button("Process Inquiry (Web Demo)", variant="primary")
with gr.Column(visible=False) as results_box:
gr.Markdown("## ✨ ZOTHEOS Final Synthesized Insight ✨")
synthesized_summary_output = gr.Markdown()
gr.Markdown("### 💬 Detailed Individual Perspectives")
fusion_output = gr.Markdown()
# --- Backend Logic ---
async def process_query_wrapper(query):
if not ai_system:
return gr.update(visible=True), "[SYSTEM OFFLINE] The AI engine failed to load.", ""
response = await ai_system.process_query_with_fusion(query)
summary = response.split("###")[0].replace("## ✨ ZOTHEOS Final Synthesized Insight ✨", "").strip()
perspectives = "###" + response.split("###", 1)[1] if "###" in response else ""
return gr.update(visible=True), summary, perspectives
submit_button.click(
fn=process_query_wrapper,
inputs=[query_input],
outputs=[results_box, synthesized_summary_output, fusion_output]
)
return demo
# --- Main Execution Block ---
if __name__ == "__main__":
logger.info("--- Initializing ZOTHEOS Hugging Face Demo ---")
zotheos_interface = build_interface()
logger.info("✅ HF Demo UI built.")
zotheos_interface.queue().launch() |