UI/pages/Evaluation.py (93 lines of code) (raw):

"""Page for Evaluation framework """ import streamlit as st from loguru import logger import pandas as pd import os from evaluation.eval import bq_evaluator UPLOAD_DIRECTORY = "./" CORE = "NL2SQL Studio Core" LITE = "NL2SQL Studio Lite" LINEAR = "Linear Executor" RAG = "Rag Executor" COT = "Chain of Thought" ZERO_SHOT = "Zero Shot" FEW_SHOT = "Few Shot" DBAI = "DBAI" st.set_page_config(layout='centered') st.sidebar.title("Evaluation Settings") gen_engine = st.sidebar.selectbox( "Choose NL2SQL framework", (LITE, CORE, DBAI) ) logger.info(f"Generation using : {gen_engine}") if gen_engine == CORE: st.session_state.generation_engine = CORE with st.sidebar.container(height=140): st.session_state.model = st.radio('Select Prompting Technique', [LINEAR, RAG, COT]) elif gen_engine == LITE: st.session_state.generation_engine = LITE with st.sidebar.container(height=115): st.session_state.model = st.radio( 'Select Prompting Technique', [FEW_SHOT, ZERO_SHOT]) elif gen_engine == DBAI: st.session_state.model = DBAI else: st.session_state.generation_engine = None st.title("NL2SQL Evaluation Studio") # st.markdown("Latest NL2SQL Benchmark Report") df = pd.DataFrame( [(86, 75, 82), (91, 80, 86), (93, 83, 90)], index=['Fiserv', 'EY', 'Spider'], columns=['NL2SQL core', 'NL2SQL fiserv', 'DBAI'] ) df = df.map(lambda x: str(x)+'%') # st.dataframe(df) project = st.text_input('Mention the GCP project name', value="sl-test-project-363109") dataset = st.text_input( 'Specify the BigQuery dataset name', value="nl2sql_spider" ) tables_list = st.text_input( 'Specify the list of tables names (optional)' ) uploaded_file = st.file_uploader( "Choose the test dataset file (csv format) \ (must have columns: Question, golden_sql)", type="csv" ) with open('concert_singer_spider.csv', 'rb') as f: st.download_button('Download Spider Sample file', f, file_name='concert_singer_spider.csv' ) start_eval = st.button("Start Evaluation") st.session_state.uploaded_file_path = None if uploaded_file is not None: # Get the file details file_details = { "filename": uploaded_file.name, "filetype": uploaded_file.type, "filesize": uploaded_file.size } # Save the uploaded file to the server uploaded_file_path = os.path.join(UPLOAD_DIRECTORY, uploaded_file.name) with open(uploaded_file_path, "wb") as f: f.write(uploaded_file.getbuffer()) st.session_state.uploaded_file_path = uploaded_file_path # st.session_state.generation_engine if start_eval: pb = st.progress(0, text="Evaluation in progress. Please wait...") eval_results = bq_evaluator( project, dataset, st.session_state.uploaded_file_path, st.session_state.model, None, pb, render_result=True) st.markdown(f'Accuracy is {eval_results["accuracy"]}') @st.cache_data def convert_df(df): return df.to_csv(index=False).encode('utf-8') csv = convert_df(eval_results["output"]) st.download_button( "Download", csv, "results.csv", "text/csv", key='download-csv' )