import gradio as gr from tools.general_tools import initialize_perplexity from tools.perplexity_tools import ( get_ai_research_papers, summarize_paper, get_citation, explain_concept, ) def create_specific_ui(): """Creates the Specific UI components.""" with gr.Column() as specific_ui: gr.Markdown("# AI Research Assistant (Specific Mode)") gr.Markdown("Your AI-powered research companion") with gr.Row(): gr.Markdown("## Setup Required") gr.Markdown("1. Enter Perplexity API key and select a model") input_api_key = gr.Textbox(label="Enter your Perplexity API Key:") model_dropdown = gr.Dropdown( label="Select Perplexity Model", choices=[ "sonar-reasoning-pro", "sonar-reasoning", "sonar-pro", "sonar" ], value="sonar-pro" # Default value ) initialize_button = gr.Button("Initialize Perplexity API") initialization_status = gr.Textbox(label="Initialization Status") initialize_button.click( fn=initialize_perplexity, inputs=[input_api_key, model_dropdown], outputs=initialization_status ) with gr.Row(): gr.Markdown("## Research Tools") input_query = gr.Textbox(label="Search query for AI papers:") search_button = gr.Button("Search Papers") search_results = gr.Textbox(label="Search Results") search_button.click( fn=get_ai_research_papers, inputs=[input_query, input_api_key, model_dropdown], outputs=search_results ) with gr.Row(): input_paper_title = gr.Textbox(label="Paper title to summarize:") summarize_button = gr.Button("Summarize Paper") paper_summary = gr.Textbox(label="Paper Summary") summarize_button.click( fn=summarize_paper, inputs=[input_paper_title, input_api_key, model_dropdown], outputs=paper_summary ) with gr.Row(): input_citation_title = gr.Textbox(label="Paper title to cite:") citation_button = gr.Button("Generate Citation") citation_output = gr.Textbox(label="Citation") citation_button.click( fn=get_citation, inputs=[input_citation_title, input_api_key, model_dropdown], outputs=citation_output ) with gr.Row(): input_concept = gr.Textbox(label="Concept to explain:") explain_button = gr.Button("Explain Concept") explanation_output = gr.Textbox(label="Explanation") explain_button.click( fn=explain_concept, inputs=[input_concept, input_api_key, model_dropdown], outputs=explanation_output ) return specific_ui, input_api_key, model_dropdown