Olaemad's picture
Update app.py
c7bfd9f verified
import gradio as gr
# Import your existing functions
from src import search_on_web, search_custom_sites, search_custom_domain
def run_search_on_web(query: str):
try:
result = search_on_web(query)
return result.response_str, [item.model_dump() for item in result.citation]
except Exception as e:
return str(e), []
def run_search_custom_sites(query: str, sites: str):
try:
site_list = [s.strip() for s in sites.split(",") if s.strip()]
result = search_custom_sites(query, site_list)
return result.response_str, [item.model_dump() for item in result.citation]
except Exception as e:
return str(e), []
def run_search_custom_domains(query: str, domains: str):
try:
domain_list = [d.strip() for d in domains.split(",") if d.strip()]
result = search_custom_domain(query, domain_list)
return result.response_str, [item.model_dump() for item in result.citation]
except Exception as e:
return str(e), []
with gr.Blocks() as demo:
gr.Markdown("# πŸ”Ž MCP Search Panel")
with gr.Tab("General Web Search"):
query_input_web = gr.Textbox(label="Query")
output_web_str = gr.Textbox(label="Answer")
output_web_cite = gr.JSON(label="Citations")
search_btn_web = gr.Button("Search")
search_btn_web.click(
fn=run_search_on_web,
inputs=query_input_web,
outputs=[output_web_str, output_web_cite],
)
with gr.Tab("Custom Sites Search"):
query_input_sites = gr.Textbox(label="Query")
sites_input = gr.Textbox(label="Sites (comma-separated)")
output_sites_str = gr.Textbox(label="Answer")
output_sites_cite = gr.JSON(label="Citations")
search_btn_sites = gr.Button("Search")
search_btn_sites.click(
fn=run_search_custom_sites,
inputs=[query_input_sites, sites_input],
outputs=[output_sites_str, output_sites_cite],
)
with gr.Tab("Custom Domains Search"):
query_input_domains = gr.Textbox(label="Query")
domains_input = gr.Textbox(label="Domains (comma-separated, e.g., edu, gov)")
output_domains_str = gr.Textbox(label="Answer")
output_domains_cite = gr.JSON(label="Citations")
search_btn_domains = gr.Button("Search")
search_btn_domains.click(
fn=run_search_custom_domains,
inputs=[query_input_domains, domains_input],
outputs=[output_domains_str, output_domains_cite],
)
if __name__ == "__main__":
demo.launch(mcp_server=True)