AYS11231's picture
Upload folder using huggingface_hub
0af0679 verified
import gradio as gr
from dotenv import load_dotenv
from research_manager import ResearchManager
import certifi
import os
os.environ['SSL_CERT_FILE'] = certifi.where()
load_dotenv(override=True)
# Global variable to store the current query for the two-step process
current_query = None
async def run(query: str):
"""First step: Generate clarifying questions"""
global current_query
current_query = query
async for chunk in ResearchManager().run(query):
yield chunk
async def process_clarifications(clarifying_answers: str):
"""Second step: Process user clarifications and run research"""
global current_query
if current_query is None:
yield "Error: No query found. Please start a new research query."
return
# Parse the clarifying answers (assuming they're provided as numbered responses)
answers = []
lines = clarifying_answers.strip().split('\n')
for line in lines:
line = line.strip()
if line and not line.startswith('#'): # Skip empty lines and comments
# Remove numbering if present (e.g., "1. ", "1) ", etc.)
import re
line = re.sub(r'^\d+[\.\)]\s*', '', line)
if line:
answers.append(line)
if len(answers) < 3:
yield f"Please provide answers to all 3 clarifying questions. You provided {len(answers)} answers."
return
# Run the research with clarifications
async for chunk in ResearchManager().run(current_query, answers):
yield chunk
with gr.Blocks(theme=gr.themes.Default(primary_hue="sky")) as ui:
gr.Markdown("# Deep Research with Clarifying Questions")
with gr.Tab("Step 1: Ask Questions"):
gr.Markdown("### Enter your research topic")
query_textbox = gr.Textbox(label="What topic would you like to research?", placeholder="e.g., AI trends in 2024")
run_button = gr.Button("Generate Clarifying Questions", variant="primary")
questions_output = gr.Markdown(label="Clarifying Questions")
run_button.click(fn=run, inputs=query_textbox, outputs=questions_output)
query_textbox.submit(fn=run, inputs=query_textbox, outputs=questions_output)
with gr.Tab("Step 2: Provide Answers"):
gr.Markdown("### Answer the clarifying questions")
gr.Markdown("Please provide your answers to the clarifying questions from Step 1. You can format them as numbered responses or just separate lines.")
clarifying_answers_textbox = gr.Textbox(
label="Your Answers to Clarifying Questions",
placeholder="1. [Your answer to question 1]\n2. [Your answer to question 2]\n3. [Your answer to question 3]",
lines=5
)
process_button = gr.Button("Process Answers & Run Research", variant="primary")
research_output = gr.Markdown(label="Research Results")
process_button.click(fn=process_clarifications, inputs=clarifying_answers_textbox, outputs=research_output)
ui.launch(inbrowser=True)