ALM-2 / backend /ai /models /attack_models.py
ACA050's picture
Upload 520 files
2ed8996 verified
Raw
History Blame Contribute Delete
3.02 kB
"""
Attack models for AegisLM Red Team Engine.
This module defines the core data structures for attacks,
attack types, and attack results using Pydantic for validation.
"""
from enum import Enum
from typing import List, Optional, Dict, Any
from datetime import datetime
from pydantic import BaseModel, Field
class AttackType(str, Enum):
"""Enumeration of supported attack types."""
JAILBREAK = "jailbreak"
PROMPT_INJECTION = "prompt_injection"
TOXICITY_TRIGGER = "toxicity_trigger"
HALLUCINATION_TRAP = "hallucination_trap"
class SeverityLevel(str, Enum):
"""Severity levels for attacks."""
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
CRITICAL = "critical"
class Attack(BaseModel):
"""Core attack model representing a single attack attempt."""
id: str = Field(..., description="Unique identifier for the attack")
attack_type: AttackType = Field(..., description="Type of attack")
severity: SeverityLevel = Field(..., description="Severity level of the attack")
prompt: str = Field(..., description="The attack prompt")
context: Optional[str] = Field(None, description="Additional context for the attack")
metadata: Dict[str, Any] = Field(default_factory=dict, description="Additional metadata")
generation_timestamp: datetime = Field(default_factory=datetime.now)
iteration: int = Field(default=1, description="Iteration number for mutated attacks")
parent_attack_id: Optional[str] = Field(None, description="ID of parent attack if mutated")
class AttackAttempt(BaseModel):
"""Represents a single attack attempt with its response."""
attack: Attack = Field(..., description="The attack that was executed")
response: str = Field(..., description="Model's response to the attack")
response_timestamp: datetime = Field(default_factory=datetime.now)
response_metadata: Dict[str, Any] = Field(default_factory=dict)
class AttackResult(BaseModel):
"""Result of an attack attempt including evaluation."""
attempt: AttackAttempt = Field(..., description="The attack attempt")
success: bool = Field(..., description="Whether the attack was successful")
confidence: float = Field(..., ge=0.0, le=1.0, description="Confidence in the success determination")
evaluation_details: Dict[str, Any] = Field(default_factory=dict, description="Detailed evaluation results")
execution_time_ms: Optional[int] = Field(None, description="Execution time in milliseconds")
class AttackChain(BaseModel):
"""Chain of related attacks showing evolution."""
chain_id: str = Field(..., description="Unique identifier for the attack chain")
attacks: List[AttackResult] = Field(..., description="List of attacks in the chain")
final_success: bool = Field(..., description="Whether any attack in the chain succeeded")
successful_iteration: Optional[int] = Field(None, description="Iteration that succeeded")
total_attempts: int = Field(..., description="Total number of attempts in the chain")