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['Znajomość związków frazeologicznych'], row['Zrozumienie tekstu']], 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] # df = st.data_editor(df, 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=100,), # '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) # 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) # styled_df = styled_df.style.map('text-align: left;', subset=["Średnia", "Analiza wydźwięku", "Znajomość związków frazeologicznych", "Zrozumienie tekstu"]) return styled_df # Load data from JSON file data = load_data('data.json') # Streamlit app st.set_page_config(layout="wide") st.markdown(""" """, unsafe_allow_html=True) st.title("Benchmark Modeli LLM") st.subheader("z sarkazmami i idiomami w języku polskim") # 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=100,), '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`