File size: 3,927 Bytes
a8a332f
 
 
 
 
 
 
 
 
 
 
 
 
 
25ebb2e
a8a332f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
800aa0d
 
 
 
 
 
 
 
 
 
 
a8a332f
 
 
800aa0d
 
 
 
 
 
 
 
 
 
a8a332f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aeefa77
a8a332f
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import json
import streamlit as st
import pandas as pd
import seaborn as sns


# Function to load data from JSON file
def load_data(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        data = json.load(file)
    return pd.DataFrame(data)

# Function to style the DataFrame
def style_dataframe(df: pd.DataFrame):
    df['Wyniki'] = df.apply(lambda row: [row['Analiza wydźwięku'], row['Zrozumienie tekstu'], row['Znajomość związków frazeologicznych']], axis=1)

    # Insert the new column after the 'Średnia' column
    cols = list(df.columns)
    cols.insert(cols.index('Średnia') + 1, cols.pop(cols.index('Wyniki')))
    df = df[cols]

    # Create a color ramp using Seaborn
    return df

def styler(df: pd.DataFrame):
    palette = sns.color_palette("RdYlGn", as_cmap=True)
    styled_df = df.style.background_gradient(cmap=palette, subset=["Średnia", "Analiza wydźwięku", "Znajomość związków frazeologicznych", "Zrozumienie tekstu"]).format(precision=2)
    return styled_df

# Load data from JSON file
data = load_data('data.json')


# Streamlit app
st.set_page_config(layout="wide")
st.markdown("""

        <style>

               .block-container {

                    padding-top: 3%;

                    padding-bottom: 1%;

                    padding-left: 10%;

                    padding-right: 10%;

                    scrollbar-width: thin;

                }

               .header-container {

                    display: flex;

                    justify-content: space-around;  /* Evenly distribute space between elements */

               }

               @media (max-width: 768px) {

                    .header-container {

                        flex-direction: column;

                        align-items: center; /* Center the items vertically on smaller screens */

                        width: 100%;

                    }

               }

        </style>

        """, unsafe_allow_html=True)

# Add logo, title, and subheader in a flexible container with equal spacing
st.markdown("""

    <div class="header-container">

        <img src="https://speakleash.org/wp-content/uploads/2023/09/SpeakLeash_logo.svg" alt="SpeakLeash Logo">

        <div class="title-container">

            <h1>Benchmark Modeli LLM</h1>

            <h2 style="margin-top: 0;">z sarkazmami i idiomami w języku polskim</h2>

        </div>

    </div>

    """, unsafe_allow_html=True)


# Create tabs
tab1, tab2 = st.tabs(["Wyniki", "Opis"])

with tab1:
    st.write("Poniżej znajduje się tabela przedstawiająca wyniki benchmarku dla różnych modeli LLM.")

    # Display the styled DataFrame
    styled_df_show = style_dataframe(data)
    styled_df_show = styler(styled_df_show)
    # st.dataframe(styled_df_show)

    st.data_editor(styled_df_show, column_config={
                    'Średnia': st.column_config.NumberColumn('Średnia'),
                    'Wyniki': st.column_config.BarChartColumn(
                        "Wyniki", help="Zestawienie wyników poszczególnych zadań",
                        y_min=0,y_max=5,),
                    'Analiza wydźwięku': st.column_config.NumberColumn('Wydźwięk', help='Umiejętność analizy wydźwięku'),
                    'Znajomość związków frazeologicznych': st.column_config.NumberColumn('Frazeologizmy', help='Znajomość związków frazeologicznych'),
                    'Zrozumienie tekstu': st.column_config.NumberColumn('Zrozumienie tekstu', help='Umiejętność zrozumienia tekstu'),
                    },hide_index=True, disabled=True)

with tab2:
    st.header("Opis")
    st.write("Tutaj znajduje się trochę tekstu jako wypełniacz.")
    st.write("To jest przykładowy tekst, który może zawierać dodatkowe informacje o benchmarku, metodologii, itp.")

# Run the app with `streamlit run your_script.py`