import gradio as gr from transformers import pipeline import re def anomalies_detector(logs: str) -> list[tuple[int, str]]: """ Detect anomalies in software logs using a Hugging Face transformer model. This function uses a specialized model trained to identify unusual patterns in system logs, such as: - Error messages - Unusual system states - Security-related events - Performance anomalies - Unexpected behavior patterns Args: logs (str): The input text containing log entries Returns: list[tuple[int, str]]: List of tuples containing (line_number, anomalous_text) """ # Initialize the text classification pipeline with a model specialized in log analysis classifier = pipeline( "text-classification", model="microsoft/codebert-base", # Using CodeBERT which is better for technical text top_k=2 # Get both normal and anomalous probabilities ) # Split logs into lines log_lines = logs.split('\n') anomalies = [] # Process each line for line_num, line in enumerate(log_lines, 1): if not line.strip(): # Skip empty lines continue # Get classification result results = classifier(line) # Check if the line is classified as anomalous # CodeBERT returns probabilities for both classes for result in results: if result['label'] == 'LABEL_1' and result['score'] > 0.7: anomalies.append((line_num, line)) break return anomalies # Create a standard Gradio interface demo = gr.Interface( fn=anomalies_detector, inputs="textbox", outputs="text", title="Log Anomaly Detector", description="Enter log entries to detect anomalous patterns using AI. The system will identify unusual patterns, errors, and potential issues in your logs." ) # Launch both the Gradio web interface and the MCP server if __name__ == "__main__": demo.launch(mcp_server=True, share=True)