import gradio as gr from optimizer import optimize_prompt def run_optimizer(prompt, reference): if not prompt.strip(): return "Please enter a prompt.", "" try: results = optimize_prompt(prompt, reference) best = results[0] best_prompt = best["prompt"] details = "" for i, r in enumerate(results, 1): details += f"\n=== Variant {i} | Score: {r['score']} ===\n" details += f"PROMPT:\n{r['prompt']}\n\n" details += f"OUTPUT:\n{r['output']}\n\n" return best_prompt, details except Exception as e: # user-friendly message msg = "⚠️ Something went wrong while generating results.\n" msg += "Please try again in a moment." return msg, msg with gr.Blocks() as demo: gr.Markdown("# 🧠 Prompt Optimization Tool") gr.Markdown("Powered by **Mistral-7B-Instruct** (free, HF-native LLM)") with gr.Row(): prompt_in = gr.Textbox(label="Enter your prompt", lines=4) ref_in = gr.Textbox(label="Optional: Ideal answer", lines=4) optimize_btn = gr.Button("🚀 Optimize Prompt") best_out = gr.Textbox(label="🏆 Best Optimized Prompt", lines=6) details_out = gr.Textbox(label="📊 All Variants", lines=20) optimize_btn.click( fn=run_optimizer, inputs=[prompt_in, ref_in], outputs=[best_out, details_out] ) demo.launch()