Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
한글 텍스트 수정
Browse files- tabs/leaderboard_v1.py +61 -42
tabs/leaderboard_v1.py
CHANGED
|
@@ -225,7 +225,7 @@ def create_leaderboard_v2_tab():
|
|
| 225 |
level_details = {
|
| 226 |
"ALL": {
|
| 227 |
"title": "ALL · 전체 태스크",
|
| 228 |
-
"description": "
|
| 229 |
},
|
| 230 |
"L1": {
|
| 231 |
"title": "<span style='color: white;'>L1 · 단일 도구 실행</span>",
|
|
@@ -237,7 +237,7 @@ def create_leaderboard_v2_tab():
|
|
| 237 |
},
|
| 238 |
"L3": {
|
| 239 |
"title": "<span style='color: white;'>L3 · 순차적 추론 (Chaining)</span>",
|
| 240 |
-
"description": "<span style='color: white;'>복수 단계의 순차적
|
| 241 |
},
|
| 242 |
"L4": {
|
| 243 |
"title": "<span style='color: white;'>L4 · 병렬적 추론 (Aggregation)</span>",
|
|
@@ -380,7 +380,7 @@ def create_leaderboard_v2_tab():
|
|
| 380 |
if overall_highlight:
|
| 381 |
overall_header_classes.append("highlight-header")
|
| 382 |
table_html += f"""
|
| 383 |
-
<th class="{' '.join(overall_header_classes)}" title="
|
| 384 |
<span class="metric-header">Overall <span class="info-icon">ⓘ</span></span>
|
| 385 |
</th>
|
| 386 |
"""
|
|
@@ -389,7 +389,7 @@ def create_leaderboard_v2_tab():
|
|
| 389 |
if highlight_map.get(level):
|
| 390 |
header_classes.append("highlight-header")
|
| 391 |
table_html += f"""
|
| 392 |
-
<th class="{' '.join(header_classes)}" title="
|
| 393 |
<span class="metric-header">{level} <span class="info-icon">ⓘ</span></span>
|
| 394 |
</th>
|
| 395 |
"""
|
|
@@ -896,7 +896,7 @@ def create_leaderboard_v2_tab():
|
|
| 896 |
|
| 897 |
.section-title {
|
| 898 |
font-size: 2.2rem;
|
| 899 |
-
font-weight:
|
| 900 |
color: var(--text-primary);
|
| 901 |
margin-bottom: 12px;
|
| 902 |
text-align: center !important;
|
|
@@ -905,7 +905,7 @@ def create_leaderboard_v2_tab():
|
|
| 905 |
.section-lead, .section-subtitle {
|
| 906 |
font-size: 1.1rem;
|
| 907 |
color: var(--text-secondary);
|
| 908 |
-
max-width:
|
| 909 |
margin: 0 auto 24px auto;
|
| 910 |
line-height: 1.7;
|
| 911 |
text-align: center !important;
|
|
@@ -983,7 +983,7 @@ def create_leaderboard_v2_tab():
|
|
| 983 |
}
|
| 984 |
|
| 985 |
.scenario-body {
|
| 986 |
-
max-width:
|
| 987 |
margin: 0 auto;
|
| 988 |
text-align: center;
|
| 989 |
}
|
|
@@ -1091,7 +1091,7 @@ def create_leaderboard_v2_tab():
|
|
| 1091 |
gr.HTML("""
|
| 1092 |
<div style="text-align: center; padding: 20px 0;">
|
| 1093 |
<h1 class="hero-title">Hugging Face KREW Ko-AgentBench</h1>
|
| 1094 |
-
<p class="hero-subtitle">한국
|
| 1095 |
</div>
|
| 1096 |
""")
|
| 1097 |
|
|
@@ -1138,7 +1138,7 @@ def create_leaderboard_v2_tab():
|
|
| 1138 |
<div class="section-header">
|
| 1139 |
<h2 class="section-title">단계별 태스크 설계</h2>
|
| 1140 |
</div>
|
| 1141 |
-
<p class="section-lead" style="text-align: center; margin: 0 auto 24px auto; max-width:
|
| 1142 |
<div class="phase-grid">
|
| 1143 |
<div class="phase-card">
|
| 1144 |
<h3>Single-Turn</h3>
|
|
@@ -1148,9 +1148,9 @@ def create_leaderboard_v2_tab():
|
|
| 1148 |
<ul class="phase-list">
|
| 1149 |
<li style="color: white;">L1: 단일 도구 실행</li>
|
| 1150 |
<li style="color: white;">L2: 도구 선택 능력</li>
|
| 1151 |
-
<li style="color: white;">L3: 순차적
|
| 1152 |
-
<li style="color: white;">L4: 병렬적
|
| 1153 |
-
<li style="color: white;">L5:
|
| 1154 |
</ul>
|
| 1155 |
</div>
|
| 1156 |
<div class="phase-card">
|
|
@@ -1159,8 +1159,8 @@ def create_leaderboard_v2_tab():
|
|
| 1159 |
<span>20%</span>
|
| 1160 |
</div>
|
| 1161 |
<ul class="phase-list">
|
| 1162 |
-
<li style="color: white;">L6:
|
| 1163 |
-
<li style="color: white;">L7: 장기 컨텍스트
|
| 1164 |
</ul>
|
| 1165 |
</div>
|
| 1166 |
</div>
|
|
@@ -1171,10 +1171,11 @@ def create_leaderboard_v2_tab():
|
|
| 1171 |
gr.HTML("""
|
| 1172 |
<div class="dashboard-section emphasized">
|
| 1173 |
<div class="section-header">
|
| 1174 |
-
<h2 class="section-title"
|
| 1175 |
</div>
|
| 1176 |
<div class="scenario-body">
|
| 1177 |
-
<p
|
|
|
|
| 1178 |
</div>
|
| 1179 |
<div class="section-flow">⌄</div>
|
| 1180 |
</div>
|
|
@@ -1188,25 +1189,25 @@ def create_leaderboard_v2_tab():
|
|
| 1188 |
</div>
|
| 1189 |
<div class="criteria-grid">
|
| 1190 |
<div class="criteria-card">
|
| 1191 |
-
<h3
|
| 1192 |
<ul>
|
| 1193 |
-
<li
|
| 1194 |
-
<li>'정보 속성
|
| 1195 |
<li>벤치마크의 일관성과 신뢰도 보장</li>
|
| 1196 |
</ul>
|
| 1197 |
</div>
|
| 1198 |
<div class="criteria-card">
|
| 1199 |
<h3>강건성 테스트</h3>
|
| 1200 |
<ul>
|
| 1201 |
-
<li>의도된 오류 상황(상품 단종)의 오류 인식/대응 능력(전략)
|
| 1202 |
<li>현실 환경에서도 안정적으로 작동하는 모델 선별</li>
|
| 1203 |
</ul>
|
| 1204 |
</div>
|
| 1205 |
<div class="criteria-card">
|
| 1206 |
<h3>단계별 고유 정밀 지표</h3>
|
| 1207 |
<ul>
|
| 1208 |
-
<li>도구 선택, 파라미터 구성, 데이터 흐름 등 문제
|
| 1209 |
-
<li>모델의
|
| 1210 |
</ul>
|
| 1211 |
</div>
|
| 1212 |
</div>
|
|
@@ -1264,10 +1265,18 @@ def create_leaderboard_v2_tab():
|
|
| 1264 |
|
| 1265 |
.domain-performance-container .domain-subtitle {
|
| 1266 |
font-size: 1.05rem;
|
| 1267 |
-
max-width:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1268 |
margin: 0 auto;
|
|
|
|
| 1269 |
}
|
| 1270 |
|
|
|
|
| 1271 |
.leaderboard-intro .domain-title,
|
| 1272 |
.domain-performance-container > .domain-header .domain-title,
|
| 1273 |
.performance-card-container > .domain-header .domain-title {
|
|
@@ -1296,7 +1305,7 @@ def create_leaderboard_v2_tab():
|
|
| 1296 |
|
| 1297 |
.performance-card-container .domain-subtitle {
|
| 1298 |
font-size: 1.05rem;
|
| 1299 |
-
max-width:
|
| 1300 |
margin: 0 auto;
|
| 1301 |
}
|
| 1302 |
|
|
@@ -1962,7 +1971,7 @@ def create_leaderboard_v2_tab():
|
|
| 1962 |
gr.HTML("""
|
| 1963 |
<div class="domain-header">
|
| 1964 |
<h2 class="domain-title" style="color: white;">🔍 Filters & Sorting</h2>
|
| 1965 |
-
<p class="domain-subtitle" style="color: white;">모델
|
| 1966 |
</div>
|
| 1967 |
""")
|
| 1968 |
with gr.Row(elem_classes=["filters-sorting-row"]):
|
|
@@ -2001,7 +2010,8 @@ def create_leaderboard_v2_tab():
|
|
| 2001 |
<div class="domain-selector-container domain-performance-container">
|
| 2002 |
<div class="domain-header">
|
| 2003 |
<h2 class="domain-title" style="color: white;">Core Capability Radar</h2>
|
| 2004 |
-
<p class="domain-
|
|
|
|
| 2005 |
</div>
|
| 2006 |
""")
|
| 2007 |
|
|
@@ -2009,7 +2019,7 @@ def create_leaderboard_v2_tab():
|
|
| 2009 |
gr.HTML("""
|
| 2010 |
<div class="domain-header">
|
| 2011 |
<h2 class="domain-title" style="color: white;">🎯 Select Models for Comparison</h2>
|
| 2012 |
-
<p class="domain-subtitle" style="color: white;"
|
| 2013 |
</div>
|
| 2014 |
""")
|
| 2015 |
model_selector = gr.Dropdown(
|
|
@@ -2041,7 +2051,7 @@ def create_leaderboard_v2_tab():
|
|
| 2041 |
<div class="domain-selector-container domain-performance-container level-metrics-wrapper">
|
| 2042 |
<div class="domain-header">
|
| 2043 |
<h2 class="domain-title" style="color: white;">Level-Specific Metric Spotlight</h2>
|
| 2044 |
-
<p class="domain-subtitle" style="color: white;">
|
| 2045 |
</div>
|
| 2046 |
""")
|
| 2047 |
|
|
@@ -2049,7 +2059,8 @@ def create_leaderboard_v2_tab():
|
|
| 2049 |
gr.HTML("""
|
| 2050 |
<div class="domain-header">
|
| 2051 |
<h2 class="domain-title" style="color: white;">🧭 Select Task Level and Models</h2>
|
| 2052 |
-
<p class="domain-subtitle" style="color: white;">
|
|
|
|
| 2053 |
</div>
|
| 2054 |
""")
|
| 2055 |
level_metric_selector = gr.Dropdown(
|
|
@@ -2087,7 +2098,7 @@ def create_leaderboard_v2_tab():
|
|
| 2087 |
<div class="domain-selector-container domain-performance-container heatmap-wrapper">
|
| 2088 |
<div class="domain-header">
|
| 2089 |
<h2 class="domain-title" style="color: white;">Comprehensive Performance Heatmap</h2>
|
| 2090 |
-
<p class="domain-subtitle" style="color: white;"
|
| 2091 |
</div>
|
| 2092 |
<div class="chart-container heatmap-chart-container">
|
| 2093 |
""")
|
|
@@ -2340,12 +2351,13 @@ def create_leaderboard_v2_tab():
|
|
| 2340 |
return 'N/A'
|
| 2341 |
return f"{float(value):.3f}"
|
| 2342 |
|
|
|
|
| 2343 |
radar_metrics = [
|
| 2344 |
("기초 수행력", row.get('Execution Accuracy')),
|
| 2345 |
-
("복합 추론력", row.get('Complex Reasoning')),
|
| 2346 |
-
("견고성", row.get('Robustness')),
|
| 2347 |
("맥락 효율성", row.get('Context & Efficiency')),
|
| 2348 |
("전반적 성공률", row.get('Overall Success')),
|
|
|
|
|
|
|
| 2349 |
("기본적 유효성", row.get('Call Validity')),
|
| 2350 |
]
|
| 2351 |
radar_values = []
|
|
@@ -2401,7 +2413,7 @@ def create_leaderboard_v2_tab():
|
|
| 2401 |
<div class="core-section">
|
| 2402 |
<div class="core-metric-grid">
|
| 2403 |
"""
|
| 2404 |
-
ordered_labels = ["기초 수행력", "
|
| 2405 |
ordered_metrics = sorted(radar_metrics, key=lambda x: ordered_labels.index(x[0]) if x[0] in ordered_labels else len(ordered_labels))
|
| 2406 |
top_metrics = ordered_metrics[:3]
|
| 2407 |
bottom_metrics = ordered_metrics[3:]
|
|
@@ -2453,7 +2465,12 @@ def create_leaderboard_v2_tab():
|
|
| 2453 |
<div class="domain-selector-container performance-card-container">
|
| 2454 |
<div class="domain-header">
|
| 2455 |
<h2 class="domain-title" style="color: white;">Model Performance Card</h2>
|
| 2456 |
-
<p class="domain-subtitle" style="color: white;">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2457 |
</div>
|
| 2458 |
<div class="performance-card-content">
|
| 2459 |
""")
|
|
@@ -2474,7 +2491,7 @@ def create_leaderboard_v2_tab():
|
|
| 2474 |
elem_classes=["model-dropdown"]
|
| 2475 |
)
|
| 2476 |
download_card_btn = gr.Button(
|
| 2477 |
-
"
|
| 2478 |
elem_id="download-card-btn",
|
| 2479 |
elem_classes=["pill-button"]
|
| 2480 |
)
|
|
@@ -3022,13 +3039,15 @@ def create_leaderboard_v2_interface():
|
|
| 3022 |
def create_domain_radar_chart(df, selected_models=None, max_models=5):
|
| 3023 |
"""Visualize six core capability metrics on a radar chart."""
|
| 3024 |
df = df.copy()
|
|
|
|
|
|
|
| 3025 |
metrics_info = [
|
| 3026 |
-
{"column": "
|
| 3027 |
-
{"column": "
|
| 3028 |
-
{"column": "
|
| 3029 |
-
{"column": "Robustness", "label": "
|
| 3030 |
-
{"column": "
|
| 3031 |
-
{"column": "Call Validity", "label": "
|
| 3032 |
]
|
| 3033 |
|
| 3034 |
required_columns = [m["column"] for m in metrics_info]
|
|
@@ -3185,7 +3204,7 @@ def create_domain_radar_chart(df, selected_models=None, max_models=5):
|
|
| 3185 |
autosize=True,
|
| 3186 |
annotations=[
|
| 3187 |
dict(
|
| 3188 |
-
text="
|
| 3189 |
xref="paper", yref="paper",
|
| 3190 |
x=0.98, y=0.02,
|
| 3191 |
xanchor='right', yanchor='bottom',
|
|
|
|
| 225 |
level_details = {
|
| 226 |
"ALL": {
|
| 227 |
"title": "ALL · 전체 태스크",
|
| 228 |
+
"description": "L1~L7 단계의 평균 SR을 통해 모델의 전반적 성능 수준과 단계별 강점을 비교할 수 있습니다."
|
| 229 |
},
|
| 230 |
"L1": {
|
| 231 |
"title": "<span style='color: white;'>L1 · 단일 도구 실행</span>",
|
|
|
|
| 237 |
},
|
| 238 |
"L3": {
|
| 239 |
"title": "<span style='color: white;'>L3 · 순차적 추론 (Chaining)</span>",
|
| 240 |
+
"description": "<span style='color: white;'>복수 단계의 순차적 추론을 통해 문제를 해결하는 과정을 검증합니다.</span>"
|
| 241 |
},
|
| 242 |
"L4": {
|
| 243 |
"title": "<span style='color: white;'>L4 · 병렬적 추론 (Aggregation)</span>",
|
|
|
|
| 380 |
if overall_highlight:
|
| 381 |
overall_header_classes.append("highlight-header")
|
| 382 |
table_html += f"""
|
| 383 |
+
<th class="{' '.join(overall_header_classes)}" title="L1~L7 모든 단계의 평균 성공률">
|
| 384 |
<span class="metric-header">Overall <span class="info-icon">ⓘ</span></span>
|
| 385 |
</th>
|
| 386 |
"""
|
|
|
|
| 389 |
if highlight_map.get(level):
|
| 390 |
header_classes.append("highlight-header")
|
| 391 |
table_html += f"""
|
| 392 |
+
<th class="{' '.join(header_classes)}" title="평균 성공률 {level}">
|
| 393 |
<span class="metric-header">{level} <span class="info-icon">ⓘ</span></span>
|
| 394 |
</th>
|
| 395 |
"""
|
|
|
|
| 896 |
|
| 897 |
.section-title {
|
| 898 |
font-size: 2.2rem;
|
| 899 |
+
font-weight: 1000;
|
| 900 |
color: var(--text-primary);
|
| 901 |
margin-bottom: 12px;
|
| 902 |
text-align: center !important;
|
|
|
|
| 905 |
.section-lead, .section-subtitle {
|
| 906 |
font-size: 1.1rem;
|
| 907 |
color: var(--text-secondary);
|
| 908 |
+
max-width: 1500px;
|
| 909 |
margin: 0 auto 24px auto;
|
| 910 |
line-height: 1.7;
|
| 911 |
text-align: center !important;
|
|
|
|
| 983 |
}
|
| 984 |
|
| 985 |
.scenario-body {
|
| 986 |
+
max-width: 1200px;
|
| 987 |
margin: 0 auto;
|
| 988 |
text-align: center;
|
| 989 |
}
|
|
|
|
| 1091 |
gr.HTML("""
|
| 1092 |
<div style="text-align: center; padding: 20px 0;">
|
| 1093 |
<h1 class="hero-title">Hugging Face KREW Ko-AgentBench</h1>
|
| 1094 |
+
<p class="hero-subtitle">한국 서비스 환경 특화 에이전트 벤치마크</p>
|
| 1095 |
</div>
|
| 1096 |
""")
|
| 1097 |
|
|
|
|
| 1138 |
<div class="section-header">
|
| 1139 |
<h2 class="section-title">단계별 태스크 설계</h2>
|
| 1140 |
</div>
|
| 1141 |
+
<p class="section-lead" style="text-align: center; margin: 0 auto 24px auto; max-width: 1000px; line-height: 1.7; word-break: keep-all;">단순 도구 호출부터 장기적 맥락 이해와 강건성 처리까지, 에이전트의 능력을 7단계 구분하여 입체적으로 분석했습니다.</p>
|
| 1142 |
<div class="phase-grid">
|
| 1143 |
<div class="phase-card">
|
| 1144 |
<h3>Single-Turn</h3>
|
|
|
|
| 1148 |
<ul class="phase-list">
|
| 1149 |
<li style="color: white;">L1: 단일 도구 실행</li>
|
| 1150 |
<li style="color: white;">L2: 도구 선택 능력</li>
|
| 1151 |
+
<li style="color: white;">L3: 순차적 추론</li>
|
| 1152 |
+
<li style="color: white;">L4: 병렬적 추론</li>
|
| 1153 |
+
<li style="color: white;">L5: 강건성</li>
|
| 1154 |
</ul>
|
| 1155 |
</div>
|
| 1156 |
<div class="phase-card">
|
|
|
|
| 1159 |
<span>20%</span>
|
| 1160 |
</div>
|
| 1161 |
<ul class="phase-list">
|
| 1162 |
+
<li style="color: white;">L6: 효율성</li>
|
| 1163 |
+
<li style="color: white;">L7: 장기 컨텍스트 기억</li>
|
| 1164 |
</ul>
|
| 1165 |
</div>
|
| 1166 |
</div>
|
|
|
|
| 1171 |
gr.HTML("""
|
| 1172 |
<div class="dashboard-section emphasized">
|
| 1173 |
<div class="section-header">
|
| 1174 |
+
<h2 class="section-title">국내 환경에 최적화된 18종 API를 활용한 실생활 시나리오 설계</h2>
|
| 1175 |
</div>
|
| 1176 |
<div class="scenario-body">
|
| 1177 |
+
<p>네이버 지도, 카카오 등 국내 주요 서비스 API를 연동하여,
|
| 1178 |
+
‘약속 예약’, ‘블로그 후기 검색’ 등 실생활 밀착형 문제 해결 시나리오를 설계했습니다.</p>
|
| 1179 |
</div>
|
| 1180 |
<div class="section-flow">⌄</div>
|
| 1181 |
</div>
|
|
|
|
| 1189 |
</div>
|
| 1190 |
<div class="criteria-grid">
|
| 1191 |
<div class="criteria-card">
|
| 1192 |
+
<h3>캐싱 기반 반복 평가</h3>
|
| 1193 |
<ul>
|
| 1194 |
+
<li>실제 API 응답 캐싱</li>
|
| 1195 |
+
<li>'외부 API 불안정성, 정보 속성 불일치' 등 기존 벤치마크의 고질적 문제 해결</li>
|
| 1196 |
<li>벤치마크의 일관성과 신뢰도 보장</li>
|
| 1197 |
</ul>
|
| 1198 |
</div>
|
| 1199 |
<div class="criteria-card">
|
| 1200 |
<h3>강건성 테스트</h3>
|
| 1201 |
<ul>
|
| 1202 |
+
<li>의도된 오류 상황(상품 단종)의 오류 인식/대응 능력(전략) 평가</li>
|
| 1203 |
<li>현실 환경에서도 안정적으로 작동하는 모델 선별</li>
|
| 1204 |
</ul>
|
| 1205 |
</div>
|
| 1206 |
<div class="criteria-card">
|
| 1207 |
<h3>단계별 고유 정밀 지표</h3>
|
| 1208 |
<ul>
|
| 1209 |
+
<li>도구 선택, 파라미터 구성, 데이터 처리 흐름 등 각 단계의 문제 해결 효율성 평가</li>
|
| 1210 |
+
<li>모델의 강·약점 정량적으로 식별</li>
|
| 1211 |
</ul>
|
| 1212 |
</div>
|
| 1213 |
</div>
|
|
|
|
| 1265 |
|
| 1266 |
.domain-performance-container .domain-subtitle {
|
| 1267 |
font-size: 1.05rem;
|
| 1268 |
+
max-width: 1000px;
|
| 1269 |
+
margin: 0 auto;
|
| 1270 |
+
}
|
| 1271 |
+
|
| 1272 |
+
.domain-performance-container .domain-subtitle_ {
|
| 1273 |
+
font-size: 1.07rem;
|
| 1274 |
+
max-width: 1000px;
|
| 1275 |
margin: 0 auto;
|
| 1276 |
+
color: #bdbdbd;
|
| 1277 |
}
|
| 1278 |
|
| 1279 |
+
|
| 1280 |
.leaderboard-intro .domain-title,
|
| 1281 |
.domain-performance-container > .domain-header .domain-title,
|
| 1282 |
.performance-card-container > .domain-header .domain-title {
|
|
|
|
| 1305 |
|
| 1306 |
.performance-card-container .domain-subtitle {
|
| 1307 |
font-size: 1.05rem;
|
| 1308 |
+
max-width: 1000px;
|
| 1309 |
margin: 0 auto;
|
| 1310 |
}
|
| 1311 |
|
|
|
|
| 1971 |
gr.HTML("""
|
| 1972 |
<div class="domain-header">
|
| 1973 |
<h2 class="domain-title" style="color: white;">🔍 Filters & Sorting</h2>
|
| 1974 |
+
<p class="domain-subtitle" style="color: white;">모델 유형과 정렬 기준을 선택해 원하는 방식으로 결과를 살펴보세요.</p>
|
| 1975 |
</div>
|
| 1976 |
""")
|
| 1977 |
with gr.Row(elem_classes=["filters-sorting-row"]):
|
|
|
|
| 2010 |
<div class="domain-selector-container domain-performance-container">
|
| 2011 |
<div class="domain-header">
|
| 2012 |
<h2 class="domain-title" style="color: white;">Core Capability Radar</h2>
|
| 2013 |
+
<p class="domain-subtitle_">#기초 수행력 #복합 추론력 #견고성 #맥락 효율성 #전반적 성공률 #기본적 유효성</p>
|
| 2014 |
+
<p class="domain-subtitle" style="color: white;">6대 핵심 역량을 통해 모델의 수행 능력과 균형도를 분석하세요.</p>
|
| 2015 |
</div>
|
| 2016 |
""")
|
| 2017 |
|
|
|
|
| 2019 |
gr.HTML("""
|
| 2020 |
<div class="domain-header">
|
| 2021 |
<h2 class="domain-title" style="color: white;">🎯 Select Models for Comparison</h2>
|
| 2022 |
+
<p class="domain-subtitle" style="color: white;">레이더 차트에서 비교할 모델을 선택하세요.</p>
|
| 2023 |
</div>
|
| 2024 |
""")
|
| 2025 |
model_selector = gr.Dropdown(
|
|
|
|
| 2051 |
<div class="domain-selector-container domain-performance-container level-metrics-wrapper">
|
| 2052 |
<div class="domain-header">
|
| 2053 |
<h2 class="domain-title" style="color: white;">Level-Specific Metric Spotlight</h2>
|
| 2054 |
+
<p class="domain-subtitle" style="color: white;">L1~L7 단계별로 고유한 평가 지표를 기준으로 모델 점수를 비교해보세요.</p>
|
| 2055 |
</div>
|
| 2056 |
""")
|
| 2057 |
|
|
|
|
| 2059 |
gr.HTML("""
|
| 2060 |
<div class="domain-header">
|
| 2061 |
<h2 class="domain-title" style="color: white;">🧭 Select Task Level and Models</h2>
|
| 2062 |
+
<p class="domain-subtitle" style="color: white;">L1~L7 단계와 모델을 선택해, SR 기반의 세부 지표를 탐색해보세요.
|
| 2063 |
+
</p>
|
| 2064 |
</div>
|
| 2065 |
""")
|
| 2066 |
level_metric_selector = gr.Dropdown(
|
|
|
|
| 2098 |
<div class="domain-selector-container domain-performance-container heatmap-wrapper">
|
| 2099 |
<div class="domain-header">
|
| 2100 |
<h2 class="domain-title" style="color: white;">Comprehensive Performance Heatmap</h2>
|
| 2101 |
+
<p class="domain-subtitle" style="color: white;">각 모델의 L1~L7 단계별 SR 점수를 한눈에 확인할 수 있는 종합 성능 히트맵을 살펴보세요.</p>
|
| 2102 |
</div>
|
| 2103 |
<div class="chart-container heatmap-chart-container">
|
| 2104 |
""")
|
|
|
|
| 2351 |
return 'N/A'
|
| 2352 |
return f"{float(value):.3f}"
|
| 2353 |
|
| 2354 |
+
# Use the same order as the domain radar but keep '견고성' (Robustness) last
|
| 2355 |
radar_metrics = [
|
| 2356 |
("기초 수행력", row.get('Execution Accuracy')),
|
|
|
|
|
|
|
| 2357 |
("맥락 효율성", row.get('Context & Efficiency')),
|
| 2358 |
("전반적 성공률", row.get('Overall Success')),
|
| 2359 |
+
("견고성", row.get('Robustness')),
|
| 2360 |
+
("복합 추론력", row.get('Complex Reasoning')),
|
| 2361 |
("기본적 유효성", row.get('Call Validity')),
|
| 2362 |
]
|
| 2363 |
radar_values = []
|
|
|
|
| 2413 |
<div class="core-section">
|
| 2414 |
<div class="core-metric-grid">
|
| 2415 |
"""
|
| 2416 |
+
ordered_labels = ["기초 수행력", "맥락 효율성", "전반적 성공률", "견고성", "복합 추론력", "기본적 유효성"]
|
| 2417 |
ordered_metrics = sorted(radar_metrics, key=lambda x: ordered_labels.index(x[0]) if x[0] in ordered_labels else len(ordered_labels))
|
| 2418 |
top_metrics = ordered_metrics[:3]
|
| 2419 |
bottom_metrics = ordered_metrics[3:]
|
|
|
|
| 2465 |
<div class="domain-selector-container performance-card-container">
|
| 2466 |
<div class="domain-header">
|
| 2467 |
<h2 class="domain-title" style="color: white;">Model Performance Card</h2>
|
| 2468 |
+
<p class="domain-subtitle" style="color: white;">
|
| 2469 |
+
모델의 성능 스펙트럼을 6대 핵심 지표와 L1~L7 단계�� 종합 성공률(SR)로 시각화한 정밀 분석 카드를 확인해보세요.
|
| 2470 |
+
</p>
|
| 2471 |
+
<p class="domain-note" style="color: #bdbdbd; font-size: 0.85em; margin-top: 4px;">
|
| 2472 |
+
※ Rank는 L1~L7 단계별 SR의 평균값을 기준으로 산정되었습니다.
|
| 2473 |
+
</p>
|
| 2474 |
</div>
|
| 2475 |
<div class="performance-card-content">
|
| 2476 |
""")
|
|
|
|
| 2491 |
elem_classes=["model-dropdown"]
|
| 2492 |
)
|
| 2493 |
download_card_btn = gr.Button(
|
| 2494 |
+
"PNG로 다운로드",
|
| 2495 |
elem_id="download-card-btn",
|
| 2496 |
elem_classes=["pill-button"]
|
| 2497 |
)
|
|
|
|
| 3039 |
def create_domain_radar_chart(df, selected_models=None, max_models=5):
|
| 3040 |
"""Visualize six core capability metrics on a radar chart."""
|
| 3041 |
df = df.copy()
|
| 3042 |
+
# Use the same metric order and Korean labels as the model performance card
|
| 3043 |
+
# Match the model card order but place '견고성' (Robustness) last as requested
|
| 3044 |
metrics_info = [
|
| 3045 |
+
{"column": "Execution Accuracy", "label": "기초 수행력", "description": "CallEM · ArgAcc · SelectAcc"},
|
| 3046 |
+
{"column": "Context & Efficiency", "label": "맥락 효율성", "description": "ReuseRate · EffScore · ContextRetention"},
|
| 3047 |
+
{"column": "Overall Success", "label": "전반적 성공률", "description": "L1~L7의 평균 성공률"},
|
| 3048 |
+
{"column": "Robustness", "label": "견고성", "description": "AdaptiveRouting · FallbackSR"},
|
| 3049 |
+
{"column": "Complex Reasoning", "label": "복합 추론력", "description": "ProvAcc · PSM · Coverage"},
|
| 3050 |
+
{"column": "Call Validity", "label": "기본적 유효성", "description": "레벨별 EPR_CVR 평균"},
|
| 3051 |
]
|
| 3052 |
|
| 3053 |
required_columns = [m["column"] for m in metrics_info]
|
|
|
|
| 3204 |
autosize=True,
|
| 3205 |
annotations=[
|
| 3206 |
dict(
|
| 3207 |
+
text="Ko-Agent Leaderboard",
|
| 3208 |
xref="paper", yref="paper",
|
| 3209 |
x=0.98, y=0.02,
|
| 3210 |
xanchor='right', yanchor='bottom',
|