DocUA's picture
Edit interface
5c490a4
raw
history blame
2.99 kB
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/documents/nakaz-vid-18-05-2023-109-23-pro-затвердження-metodології-proведення-antykоруptsijnої-ексpertyzy-национальным-агентством-з-пытан-запобігання-корупції/?hilite=%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D1%96).
### Інструкція:
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