import gradio as gr
from src.logic import generate_answer, rebuild
def create_ui():
with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue"), title="MindMesh") as demo:
# --- Header ---
gr.Markdown(
"""
🧠 MindMesh — Cross-Domain Reasoning Assistant
Ask a question and get synthesized insights from science, philosophy, business, and beyond.
"""
)
# --- Main Input Section ---
with gr.Row(equal_height=False):
# Left column - Question + Buttons
with gr.Column(scale=2.5): # slightly reduced width
q = gr.Textbox(
label="Your Question",
placeholder="Write your prompt here...",
lines=1,
show_label=True,
)
with gr.Row():
generate_btn = gr.Button("⚙️ Generate Insight", variant="primary")
clear_btn = gr.Button("🧹 Clear", variant="secondary")
status = gr.Markdown(value="", visible=True)
# Right column - Answer Mode (expanded slightly)
with gr.Column(scale=1.2, min_width=360):
mode = gr.Radio(
["Quick Summary (Offline)", "LLM Precision (Groq Llama-3.1 70B)"],
value="Quick Summary (Offline)",
label="Answer Mode",
show_label=True,
elem_id="answer-mode",
)
# --- Output section ---
gr.Markdown("
")
gr.Markdown("### 🧭 Synthesized Insight")
out = gr.Markdown(elem_id="output-box")
# --- Example prompts ---
examples = gr.Examples(
examples=[
["What can startups learn from the Industrial Revolution?"],
["How do Stoic principles guide modern leadership?"],
["What parallels exist between habit loops and innovation?"],
["How does color psychology affect business branding?"]
],
inputs=q
)
# --- Button logic ---
generate_btn.click(fn=lambda x, m: generate_answer(x, m), inputs=[q, mode], outputs=out)
clear_btn.click(lambda: ("", "", ""), outputs=[q, out, status])
q.submit(fn=lambda x, m: generate_answer(x, m), inputs=[q, mode], outputs=out)
# --- Custom Styling ---
gr.HTML("""
""")
return demo