import gradio as gr from modules import analysis # Correct import # Create the Gradio Blocks UI 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.BarPlot(label="Event Frequency by Hour", x="Hour", y="Count", interactive=False) pie_chart = gr.PieChart(label="Event Type Distribution", interactive=False) 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") # ✅ Fixed the typo here: analysis not analys 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()