import gradio as gr import json import time # Load sealed results with open("results.json") as f: data = json.load(f) def simulate_epochs(difficulty, user_log): # Try to parse challenger input try: user_data = json.loads(user_log) if user_log.strip() else None user_label = user_data.get("label", "User") if user_data else None user_scores = user_data.get("scores", []) if user_data else [] except: yield "❌ Invalid log format. Use: {\"label\": \"MyOpt\", \"epochs\": [...], \"scores\": [...]}." return results = data[difficulty] has_challenger = user_label is not None header = "| Epoch | LIAM (RFT) | Adam | Lion | SGR" if has_challenger: header += f" | {user_label}" header += " |\n|-------|-------------|------|------|-----" if has_challenger: header += "|--------------" header += "|\n" table = header for i in range(len(results["epochs"])): epoch = results["epochs"][i] rft = results["LIAM_RFT"][i] adam = results["Adam"][i] lion = results["Lion"][i] sgr = results["SGR"][i] row = f"| {epoch} | {rft:.2f}% | {adam:.2f}% | {lion:.2f}% | {sgr:.2f}%" if has_challenger: challenger_score = user_scores[i] if i < len(user_scores) else "-" row += f" | {challenger_score}" row += " |\n" table += row yield table time.sleep(0.75) demo = gr.Interface( fn=simulate_epochs, inputs=[ gr.Dropdown(choices=list(data.keys()), label="Select Difficulty Level"), gr.Textbox( lines=10, label="Optional: Paste Your Optimizer Log (JSON)", value='{\n "label": "MyOptimizer",\n "epochs": [1, 2, 3, 4, 5],\n "scores": [70.1, 74.3, 78.0, 81.2, 83.5]\n}' ) ], outputs=gr.Markdown(), title="RFT Optimizer Showdown", description="Select a difficulty tier and optionally paste your optimizer log to challenge RFT. All results sealed. No optimizer code exposed.", live=True ) demo.launch()