from typing import Optional import gradio as gr import pandas as pd from utils.similarity import batch_cos_sim def read_data(filepath: str) -> Optional[pd.DataFrame]: if not filepath: return None if filepath.endswith('.xlsx'): df = pd.read_csv(filepath) elif filepath.endswith('.csv'): df = pd.read_csv(filepath) else: raise Exception('File type not supported') return df def process(model_name: str, prompt: str, file=None, ): df = read_data(file.name) df = batch_cos_sim(df, model_name) path = 'output.csv' df.to_csv(path, index=False, encoding='utf-8-sig') return df.to_markdown(), path model_name_input = gr.components.Textbox( value='paraphrase-multilingual-MiniLM-L12-v2', lines=1, type="text" ) prompt_input = gr.components.Textbox( value='prompt,response', lines=10, type="text" ) file_output = gr.components.File(label="Output File", file_count="single", file_types=["", ".", ".csv", ".xls", ".xlsx"]) app = gr.Interface( fn=process, inputs=[model_name_input, prompt_input, "file" ], outputs=["text", file_output] ) app.launch()