← Back to Cecep Azhar
Cecep Azhar #guardrails#safety#ai-agent#security#content-filtering

AI Agent Guardrails: Cara Membuat Agent yang Aman dan Terkontrol

Cecep Saeful Azhar • 16 Oct 2026
AI Agent Guardrails: Cara Membuat Agent yang Aman dan Terkontrol
Pelajari cara implement guardrails pada AI Agent untuk keamanan dan kontrol. Teknik content filtering, input validation, dan safety layers.

Mengapa Guardrails Penting?

AI Agent yang powerful tanpa guardrails adalah resep untuk bencana. Saya pernah melihat agent yang mengirimkan response inappropriate ke customer karena tidak ada filtering yang memadai. Sejak saat itu, guardrails menjadi bagian wajib di setiap AI Agent yang saya bangun.

Guardrails berfungsi sebagai lapisan keamanan yang memastikan agent hanya menghasilkan output yang aman, relevan, dan sesuai dengan guidelines bisnis.

Multi-Layer Guardrails Architecture

Saya menggunakan pendekatan multi-layer untuk guardrails. Setiap layer menangani aspek keamanan yang berbeda:

type GuardrailsEngine struct {
    layers []GuardrailLayer
}

type GuardrailLayer interface {
    Name() string
    Check(ctx context.Context, input string, output string) (*CheckResult, error)
}

func NewGuardrailsEngine() *GuardrailsEngine {
    return &GuardrailsEngine{
        layers: []GuardrailLayer{
            &InputValidator{},          // Layer 1: Validasi input
            &ContentFilter{},           // Layer 2: Filter konten
            &PIIDetector{},             // Layer 3: Deteksi PII
            &RateLimiter{},             // Layer 4: Rate limiting
            &OutputValidator{},         // Layer 5: Validasi output
        },
    }
}

func (g *GuardrailsEngine) Check(ctx context.Context, input, output string) error {
    for _, layer := range g.layers {
        result, err := layer.Check(ctx, input, output)
        if err != nil {
            return fmt.Errorf("guardrail %s failed: %w", layer.Name(), err)
        }
        if !result.Passed {
            return fmt.Errorf("blocked by %s: %s", layer.Name(), result.Reason)
        }
    }
    return nil
}

Input Validation

Layer pertama adalah validasi input. Agent harus bisa menolak input yang berbahaya seperti prompt injection atau request yang di luar scope:

type InputValidator struct{}

func (v *InputValidator) Check(ctx context.Context, input, _ string) (*CheckResult, error) {
    // Check untuk prompt injection patterns
    injectionPatterns := []string{
        "ignore previous instructions",
        "forget everything above",
        "you are now",
        "system prompt:",
    }
    
    lowerInput := strings.ToLower(input)
    for _, pattern := range injectionPatterns {
        if strings.Contains(lowerInput, pattern) {
            return &CheckResult{
                Passed: false,
                Reason: "Potential prompt injection detected",
            }, nil
        }
    }
    
    // Check input length
    if len(input) > 10000 {
        return &CheckResult{
            Passed: false,
            Reason: "Input terlalu panjang",
        }, nil
    }
    
    return &CheckResult{Passed: true}, nil
}

PII Detection dan Masking

Untuk agent yang menangani data customer, deteksi PII (Personally Identifiable Information) sangat penting. Saya implement regex-based detection untuk NIK, nomor rekening, email, dan nomor telepon. Jika agent mendeteksi PII dalam output, sistem akan auto-mask sebelum dikirim ke user atau ke sistem eksternal.

Monitoring dan Alerting

Guardrails tanpa monitoring tidak ada artinya. Saya implement alert system yang langsung notify tim ketika ada bypass attempt atau anomali dalam pattern input/output agent. Setiap blocked request juga dicatat untuk analisis dan improvement sistem guardrails.

Membangun guardrails memang butuh extra effort, tapi ini adalah investasi yang sangat worth it untuk keamanan dan reputasi bisnis.

← More articles from Cecep Azhar Central Content Hub Home →