AEOLLM / app.py
陈俊杰
cjj:dele
8febd7d
import streamlit as st
import pandas as pd
import datetime
from huggingface_hub import HfApi
import json
# 定义一些全局变量或参数
MAX_SUBMISSIONS_PER_DAY = 3 # 每天的最大提交次数
submissions_log = {} # 用于记录用户提交的次数
# 获取用户的唯一ID(使用Hugging Face的OAuth2身份验证)
def get_user_id():
api = HfApi()
user_info = api.whoami(token=st.secrets["hf_api_token"])
return user_info["name"]
# 检查用户当天的提交次数
def check_submission_limit(user_id):
today = datetime.date.today()
if user_id in submissions_log:
if submissions_log[user_id]["date"] == today:
return submissions_log[user_id]["count"] < MAX_SUBMISSIONS_PER_DAY
else:
submissions_log[user_id] = {"date": today, "count": 0}
return True
else:
submissions_log[user_id] = {"date": today, "count": 0}
return True
# 更新用户的提交记录
def update_submission_count(user_id):
submissions_log[user_id]["count"] += 1
# CSS样式
st.markdown("""
<style>
h1 {
font-size: 2.5em; /* 标题字体大小 */
}
.stDataFrame {
font-family: Helvetica;
}
.dataframe th, .dataframe td {
width: auto;
min-width: 500px;
}
</style>
""", unsafe_allow_html=True)
# 标题
st.title('🏆AEOLLM Leaderboard')
# 描述
st.markdown("""
This leaderboard is used to show the performance of the **automatic evaluation methods of LLMs** submitted by the **AEOLLM team** on four tasks:
- Summary Generation (SG)
- Non-Factoid QA (NFQA)
- Dialogue Generation (DG)
- Text Expansion (TE).
Details of AEOLLLM can be found at the link: [https://cjj826.github.io/AEOLLM/](https://cjj826.github.io/AEOLLM/)
Submit your result here (.json):
""", unsafe_allow_html=True)
# user_id = get_user_id()
# st.write(f"欢迎, {user_id}!")
# # 检查用户的提交限制
# if check_submission_limit(user_id):
# st.write(f"您今天还可以提交 {MAX_SUBMISSIONS_PER_DAY - submissions_log[user_id]['count']} 次。")
# # 创建文件上传组件
# uploaded_file = st.file_uploader("选择一个文件", type=["json"])
# # 创建一个按钮,用户点击后提交文件
# if st.button("提交文件"):
# if uploaded_file is not None:
# # 读取文件内容
# file_content = uploaded_file.read().decode("utf-8")
# # 如果是JSON文件,解析内容
# try:
# json_data = json.loads(file_content)
# st.success("文件已成功提交!")
# st.json(json_data) # 显示上传的JSON数据
# except json.JSONDecodeError:
# st.error("无法解析JSON文件,请确保文件格式正确。")
# else:
# st.warning("请先上传一个文件!")
# else:
# st.error("您今天的提交次数已达上限。请明天再试。")
# 创建示例数据
SG = {
"methods": ["Model A", "Model B", "Model C"],
"team": ["U1", "U2", "U3"],
"acc": [0.75, 0.64, 0.83],
"tau": [0.05, 0.28, 0.16],
"s": [0.12, 0.27, 0.18],
}
df1 = pd.DataFrame(SG)
NFQA = {
"methods": ["Model A", "Model B", "Model C"],
"team": ["U1", "U2", "U3"],
"acc": [0.75, 0.64, 0.83],
"tau": [0.05, 0.28, 0.16],
"s": [0.12, 0.27, 0.18]
}
df2 = pd.DataFrame(NFQA)
DG = {
"methods": ["Model A", "Model B", "Model C"],
"team": ["U1", "U2", "U3"],
"acc": [0.75, 0.64, 0.83],
"tau": [0.05, 0.28, 0.16],
"s": [0.12, 0.27, 0.18]
}
df3 = pd.DataFrame(DG)
TE = {
"methods": ["Model A", "Model B", "Model C"],
"team": ["U1", "U2", "U3"],
"acc": [0.75, 0.64, 0.83],
"tau": [0.05, 0.28, 0.16],
"s": [0.12, 0.27, 0.18]
}
df4 = pd.DataFrame(TE)
# 创建标签页
tab1, tab2, tab3, tab4 = st.tabs(["SG", "NFQA", "DG", "TE"])
# 在标签页 1 中添加内容
with tab1:
st.header("Summary Generation")
st.dataframe(df1, use_container_width=True)
# 在标签页 2 中添加内容
with tab2:
st.header("Non-Factoid QA")
st.dataframe(df2, use_container_width=True)
# 在标签页 3 中添加内容
with tab3:
st.header("Dialogue Generation")
st.dataframe(df3, use_container_width=True)
# 在标签页 4 中添加内容
with tab4:
st.header("Text Expansion")
st.dataframe(df4, use_container_width=True, )