|
import gradio as gr |
|
from modules import analysis |
|
|
|
|
|
with gr.Blocks(title="Log Intelligence Assistant") as demo: |
|
gr.Markdown("## 🔍 Interactive Network Log Assistant") |
|
|
|
|
|
with gr.Tab("Inputs 🔽"): |
|
with gr.Row(): |
|
uploaded_files = gr.File( |
|
file_types=[".pdf", ".log", ".txt"], |
|
file_count="multiple", |
|
label="📁 Upload Log Files" |
|
) |
|
text_input = gr.Textbox( |
|
label="Paste Logs Here", |
|
lines=15, |
|
placeholder="2023-10-05 14:22:11 [Firewall] BLOCKED: 192.168.1.5..." |
|
) |
|
|
|
with gr.Row(): |
|
query_input = gr.Textbox( |
|
label="Ask About Logs", |
|
placeholder="Find failed login attempts from 192.168.1.5" |
|
) |
|
quick_query = gr.Dropdown( |
|
choices=["", "Detect anomalies", "Show blocked IPs", "Generate summary"], |
|
label="Quick Actions" |
|
) |
|
|
|
with gr.Accordion("⚙️ Configuration Controls", open=False): |
|
temperature = gr.Slider(minimum=0.1, maximum=1.0, value=0.7, label="Creativity (Temperature)") |
|
start_time = gr.DateTime(label="Start Time") |
|
end_time = gr.DateTime(label="End Time") |
|
|
|
|
|
with gr.Tab("Outputs 🔼"): |
|
analysis_result = gr.Textbox(label="Analysis Results", lines=10, interactive=False) |
|
|
|
|
|
bar_plot = gr.Plot(label="Event Frequency by Hour") |
|
pie_chart = gr.Plot(label="Event Type Distribution") |
|
|
|
alert_feed = gr.HighlightedText(label="Security Alerts", color_map={ |
|
"CRITICAL": "red", |
|
"WARNING": "orange", |
|
"INFO": "blue" |
|
}) |
|
|
|
|
|
with gr.Tab("Export 📤"): |
|
export_csv = gr.Button("Save as CSV") |
|
export_pdf = gr.Button("Export PDF Report") |
|
|
|
|
|
run_button = gr.Button("🔎 Analyze Logs") |
|
|
|
|
|
run_button.click( |
|
fn=analysis.run_analysis, |
|
inputs=[uploaded_files, text_input, query_input, quick_query, temperature, start_time, end_time], |
|
outputs=[analysis_result, bar_plot, pie_chart, alert_feed] |
|
) |
|
|
|
demo.launch() |
|
|