import gradio as gr from src.chatbot import chatbot, keyword_search with gr.Blocks() as App: with gr.Tab("ChatBot"): #Apply RAG using chatbut function from local file ChatBot.py gr.ChatInterface(chatbot, title="PoliticsToYou", description= "This chatbot uses the infomation of speeches of the german parliament (since 2021) \ to get insight on the view points of the german parties and the debate of the parliament.", examples=["Wie steht die CDU zur Cannabislegalisierung?","Was waren die wichtigsten Themen in der aktuellen Legislaturperiode?"], #change to meaningful examples cache_examples=False, #true increases the loading time ) with gr.Tab("KeyWordSearch"): with gr.Blocks() as Block: #Keyword Input keyword_box = gr.Textbox(label='keyword') #Additional Input (hidden) with gr.Accordion('Detailed filters', open=False): #Row orientation with gr.Row() as additional_input: n_slider = gr.Slider(label="Number of Results", minimum=1, maximum=100, step=1, value=10) party_dopdown = gr.Dropdown(choices=['CDU/CSU','SPD','FDP','GrĂ¼ne','not found','DIE LINKE.','PDS','KPD'], label='Party') search_btn = gr.Button('Search') with gr.Column(visible=False) as output_col: results_df = gr.Dataframe(label='Results', interactive=False) #Download results from keyword search with gr.Accordion('Would you like to download your results?', open=False) as download_row: with gr.Row(): ftype_dropdown = gr.Dropdown(choices=["csv","excel","json"], label="Format") export_btn = gr.Button('Export') file = gr.File(file_types=[".xlsx", ".csv", ".json"], visible=False) #Keyword Search on click def search(keyword, n, party): #ToDo: Include party and timedate return { output_col: gr.Column(visible=True), results_df: keyword_search(query=keyword, n=n, party_filter=party), } search_btn.click( fn=search, inputs=[keyword_box, n_slider, party_dopdown], outputs=[output_col, results_df], ) #Export data to a downloadable format def export(df, keyword, ftype=None): if ftype == "csv": file = f'{keyword}.csv' df.to_csv(file, index = False) return gr.File(value=file,visible=True) elif ftype == "json": file = f'{keyword}.json' df.to_json(file, index = True) return gr.File(value=file,visible=True) else: file = f'{keyword}.xlsx' df.to_excel(file, index = True) return gr.File(value=file,visible=True) export_btn.click( fn=export, inputs=[results_df, keyword_box, ftype_dropdown], outputs=[file], ) if __name__ == "__main__": App.launch(share=False) #true not supported on hf spaces