RFTSystems's picture
Update app.py
292ec7c verified
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()