Spaces:
Runtime error
Runtime error
| '''Main script to run gradio interface and MCP server.''' | |
| import logging | |
| from pathlib import Path | |
| from logging.handlers import RotatingFileHandler | |
| import gradio as gr | |
| import assets.text as text | |
| import functions.tools as tool_funcs | |
| import functions.gradio_functions as gradio_funcs | |
| # Call the modal container so it spins up before the rest of | |
| # the app starts | |
| gradio_funcs.call_modal() | |
| # Set-up logging - make sure log directory exists | |
| Path('logs').mkdir(parents=True, exist_ok=True) | |
| # Clear old logs if present | |
| gradio_funcs.delete_old_logs('logs', 'rss_server') | |
| # Set up the root logger so we catch logs from everything | |
| logging.basicConfig( | |
| handlers=[RotatingFileHandler( | |
| 'logs/rss_server.log', | |
| maxBytes=100000, | |
| backupCount=10, | |
| mode='w' | |
| )], | |
| level=logging.INFO, | |
| format='%(levelname)s - %(name)s - %(message)s' | |
| ) | |
| # Get a logger | |
| logger = logging.getLogger(__name__) | |
| with gr.Blocks(title='RASS server') as demo: | |
| # Page text | |
| gr.HTML(text.TITLE) | |
| gr.Markdown(text.DESCRIPTION) | |
| # Log output | |
| with gr.Row(): | |
| dialog_output = gr.Textbox(label='Server logs', lines=7, max_lines=5) | |
| timer = gr.Timer(0.5, active=True) | |
| timer.tick( # pylint: disable=no-member | |
| lambda: gradio_funcs.update_log(), # pylint: disable=unnecessary-lambda | |
| outputs=dialog_output, | |
| show_api=False | |
| ) | |
| # Get feed tool | |
| gr.Markdown('### 1. `get_feed()`') | |
| website_url = gr.Textbox('slashdot', label='Website') | |
| feed_output = gr.Textbox(label='RSS entries', lines=7, max_lines=7) | |
| with gr.Row(): | |
| website_submit_button = gr.Button('Submit website') | |
| website_clear_button = gr.ClearButton(components=[website_url, feed_output]) | |
| website_submit_button.click( # pylint: disable=no-member | |
| fn=tool_funcs.get_feed, | |
| inputs=website_url, | |
| outputs=feed_output, | |
| api_name='Get RSS feed content' | |
| ) | |
| # Vector search tool | |
| gr.Markdown('### 2. `context_search()`') | |
| context_search_query = gr.Textbox( | |
| 'How is the air traffic control system being updated?', | |
| label='Context search query' | |
| ) | |
| context_search_output = gr.Textbox( | |
| label='Context search results', | |
| lines=7, | |
| max_lines=7 | |
| ) | |
| with gr.Row(): | |
| context_search_submit_button = gr.Button('Submit query') | |
| context_search_clear_button = gr.ClearButton( | |
| components=[context_search_query, context_search_output] | |
| ) | |
| context_search_submit_button.click( # pylint: disable=no-member | |
| fn=tool_funcs.context_search, | |
| inputs=context_search_query, | |
| outputs=context_search_output, | |
| api_name='Context vector search' | |
| ) | |
| # Find article tool | |
| gr.Markdown('### 3. `find_article()`') | |
| article_search_query = gr.Textbox( | |
| 'How is the air traffic control system being updated?', | |
| label='Article search query' | |
| ) | |
| article_search_output = gr.Textbox( | |
| label='Article search results', | |
| lines=3, | |
| max_lines=3 | |
| ) | |
| with gr.Row(): | |
| article_search_submit_button = gr.Button('Submit query') | |
| article_search_clear_button = gr.ClearButton( | |
| components=[article_search_query, article_search_output] | |
| ) | |
| article_search_submit_button.click( # pylint: disable=no-member | |
| fn=tool_funcs.find_article, | |
| inputs=article_search_query, | |
| outputs=article_search_output, | |
| api_name='Article vector search' | |
| ) | |
| # Get summary tool | |
| gr.Markdown('### 4. `get_summary()`') | |
| article_title = gr.Textbox( | |
| 'FAA To Eliminate Floppy Disks Used In Air Traffic Control Systems', | |
| label='Article title' | |
| ) | |
| article_summary = gr.Textbox( | |
| label='Article summary', | |
| lines=3, | |
| max_lines=3 | |
| ) | |
| with gr.Row(): | |
| article_title_submit_button = gr.Button('Submit title') | |
| article_title_clear_button = gr.ClearButton( | |
| components=[article_title, article_summary] | |
| ) | |
| article_title_submit_button.click( # pylint: disable=no-member | |
| fn=tool_funcs.get_summary, | |
| inputs=article_title, | |
| outputs=article_summary, | |
| api_name='Article summary search' | |
| ) | |
| # Get link tool | |
| gr.Markdown('### 5. `get_link()`') | |
| article_title_link = gr.Textbox( | |
| 'FAA To Eliminate Floppy Disks Used In Air Traffic Control Systems', | |
| label='Article title' | |
| ) | |
| article_link = gr.Textbox( | |
| label='Article link', | |
| lines=3, | |
| max_lines=3 | |
| ) | |
| with gr.Row(): | |
| article_link_submit_button = gr.Button('Submit title') | |
| article_link_clear_button = gr.ClearButton( | |
| components=[article_title_link, article_link] | |
| ) | |
| article_link_submit_button.click( # pylint: disable=no-member | |
| fn=tool_funcs.get_link, | |
| inputs=article_title_link, | |
| outputs=article_link, | |
| api_name='Article link search' | |
| ) | |
| if __name__ == '__main__': | |
| demo.launch(mcp_server=True) | |