def generate_agent_actions(fig, feature_map, red_nodes, central_node, scores, threshold=0.7): """ Suggests actions based on node anomaly scores and graph structure. Args: fig (matplotlib.Figure): The plotted graph figure. feature_map (list): List mapping node indices to feature names. red_nodes (list): Indices of detected anomalous nodes. central_node (int): The node with highest anomaly score. scores (np.ndarray): Anomaly score array per node. threshold (float): Minimum score to trigger an action. Returns: list of str: Recommended actions for inspection. """ actions = [] # Get name of central node try: central_name = feature_map[central_node] except IndexError: central_name = f"Node {central_node}" central_score = scores[central_node] actions.append(f"🔍 Investigate central anomaly node: {central_name} (score: {central_score:.2f})") for node in red_nodes: if node == central_node: continue try: node_name = feature_map[node] except IndexError: node_name = f"Node {node}" node_score = scores[node] if node_score > threshold: actions.append(f"🔧 Inspect connected node: {node_name} (score: {node_score:.2f})") else: actions.append(f"â„šī¸ Monitor node: {node_name} (score: {node_score:.2f})") # Sort actions by score actions.sort(key=lambda x: float(x.split("score:")[-1].rstrip(")").strip()), reverse=True) return actions