Spaces:
Running
Running
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 | |