import gradio as gr import time from .analyzer import NPAAnalyzer def create_interface(): try: analyzer = NPAAnalyzer() # Функція для форматування результату в Markdown def analyze_and_format(npa_text): if not npa_text.strip(): return "### Помилка\nПоле для тексту не може бути порожнім. Введіть текст для аналізу." start_time = time.time() # Початок відліку часу status = "Аналіз завершено..." result = analyzer.analyze_npa(npa_text) end_time = time.time() # Кінець відліку часу elapsed_time = end_time - start_time return f"### Експертний висновок\n{result}\n\n_Час аналізу: {elapsed_time:.2f} секунд._", status with gr.Blocks() as iface: gr.Markdown(""" ## Антикорупційна експертиза НПА Система допомагає визначати корупціогенні фактори в проектах НПА відповідно до [офіційної методології](https://nazk.gov.ua/uk/antykoruptsijna-ekspertyza/). ### Інструкція: 1. Введіть текст проекту нормативно-правового акту в поле нижче. 2. Натисніть кнопку "Аналіз" для запуску аналізу. 3. Ознайомтесь із висновком. """) with gr.Row(): input_box = gr.Textbox( lines=12, label="Введіть текст проекту НПА", placeholder="Вставте текст проекту нормативно-правового акту для аналізу...", ) with gr.Row(): analyze_button = gr.Button("Аналіз") with gr.Row(): output_box = gr.Markdown(label="Експертний висновок") with gr.Row(): status_box = gr.Textbox(label="Статус", interactive=False) # Логіка кнопки analyze_button.click( analyze_and_format, inputs=input_box, outputs=[output_box, status_box] ) return iface except Exception as e: print(f"Помилка при створенні інтерфейсу: {str(e)}") raise