jisubae
chore: requirements.txt
2e50df9
"""
Ko-FreshQA Leaderboard 메인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜
Gradio 기반의 μ›Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
"""
import os
import gradio as gr
from config import Config
from ui.leaderboard_tab import create_leaderboard_tab
from ui.submission_tab import create_submission_tab
from ui.dataset_tab import create_dataset_tab
def load_css():
"""CSS 파일 λ‘œλ“œ"""
current_dir = os.path.dirname(os.path.abspath(__file__))
css_path = os.path.join(current_dir, 'ui', 'styles.css')
try:
with open(css_path, 'r', encoding='utf-8') as f:
return f.read()
except FileNotFoundError:
print("⚠️ CSS νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: {css_path}")
raise FileNotFoundError(f"CSS νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: {css_path}")
def create_interface():
"""메인 μΈν„°νŽ˜μ΄μŠ€ 생성"""
css_content = load_css()
with gr.Blocks(
title="Ko-FreshQA Leaderboard"
) as app:
gr.HTML(f"<style>{css_content}</style>")
gr.Markdown("# Ko-FreshQA Leaderboard")
with gr.Tabs():
# λ¦¬λ”λ³΄λ“œ νƒ­
with gr.Tab("πŸ† λ¦¬λ”λ³΄λ“œ"):
# βœ… λ¦¬λ”λ³΄λ“œ μ»΄ν¬λ„ŒνŠΈμ™€ μƒˆλ‘œκ³ μΉ¨ ν•¨μˆ˜ λ°›μ•„μ˜€κΈ°
relaxed_table, strict_table, refresh_leaderboard = create_leaderboard_tab()
# 제좜 및 평가 νƒ­
with gr.Tab("πŸ“€ 제좜 및 평가"):
create_submission_tab()
# 데이터셋 λ‹€μš΄λ‘œλ“œ νƒ­
with gr.Tab("πŸ’Ύ 데이터셋"):
create_dataset_tab()
# βœ… 앱이 λ‘œλ“œλ  λ•Œλ§ˆλ‹€(μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€ 처음 μ—΄ λ•Œλ§ˆλ‹€) ν•œ 번 μžλ™μœΌλ‘œ μƒˆλ‘œκ³ μΉ¨
app.load(
fn=refresh_leaderboard,
inputs=None,
outputs=[relaxed_table, strict_table],
)
return app
def main():
"""메인 μ‹€ν–‰ ν•¨μˆ˜"""
print("πŸ‡°πŸ‡· ν•œκ΅­μ–΄ FreshQA λ¦¬λ”λ³΄λ“œ μ‹œμž‘ 쀑...")
print("πŸ“‹ λ¦¬λ”λ³΄λ“œ μ œμΆœμ„ μœ„ν•΄μ„œλŠ” 'πŸ“€ 제좜 및 평가' 탭을 μ‚¬μš©ν•˜μ„Έμš”.")
# ν•„μˆ˜ μ„€μ • 검증
try:
Config.validate_required_configs()
print("βœ… ν•„μˆ˜ μ„€μ • 검증 μ™„λ£Œ")
except ValueError as e:
print(f"❌ μ„€μ • 였λ₯˜: {e}")
import sys
sys.exit(1)
app = create_interface()
# Hugging Face Spaces ν™˜κ²½ 감지
is_huggingface_spaces = Config.IS_HUGGINGFACE_SPACES
if is_huggingface_spaces:
print("πŸš€ Hugging Face Spaces ν™˜κ²½μ—μ„œ μ‹€ν–‰ 쀑...")
app.launch(
server_name="0.0.0.0",
server_port=7860,
share=False,
debug=False,
show_error=True,
theme=gr.themes.Soft()
)
else:
print("πŸ’» 둜컬 ν™˜κ²½μ—μ„œ μ‹€ν–‰ 쀑...")
app.launch(
server_name="127.0.0.1",
server_port=7860,
share=False,
debug=True,
show_error=True,
theme=gr.themes.Soft()
)
if __name__ == "__main__":
main()