import gradio as gr import pandas as pd import os CSV_PATH = "results.csv" # CSV가 없으면 빈 테이블 생성 if not os.path.exists(CSV_PATH): df_init = pd.DataFrame(columns=[ "Model Name", "Accuracy", "F1 Score", "Inference Time (s)", "Hugging Face Link" ]) df_init.to_csv(CSV_PATH, index=False) # 제출 처리 함수 def submit_result(model, acc, f1, time, link): try: df = pd.read_csv(CSV_PATH) new_row = { "Model Name": model.strip(), "Accuracy": float(acc), "F1 Score": float(f1), "Inference Time (s)": float(time), "Hugging Face Link": link.strip() } updated_df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True) updated_df.to_csv(CSV_PATH, index=False) return "✅ Submitted!", updated_df except Exception as e: return f"❌ Error: {str(e)}", pd.read_csv(CSV_PATH) # Gradio 앱 with gr.Blocks() as demo: gr.Markdown("# 📊 Model Leaderboard + Submission") with gr.Row(): model = gr.Textbox(label="Model Name") acc = gr.Textbox(label="Accuracy (e.g. 0.89)") f1 = gr.Textbox(label="F1 Score (e.g. 0.87)") time = gr.Textbox(label="Inference Time (s)") link = gr.Textbox(label="Hugging Face Link") submit_btn = gr.Button("Submit Result") status = gr.Textbox(label="Submission Status", interactive=False) table = gr.Dataframe( value=pd.read_csv(CSV_PATH), headers=["Model Name", "Accuracy", "F1 Score", "Inference Time (s)", "Hugging Face Link"], interactive=False, label="Current Leaderboard" ) submit_btn.click( fn=submit_result, inputs=[model, acc, f1, time, link], outputs=[status, table] ) demo.launch()