Sebelum memulai praktik, pastikan Anda telah memahami konsep dasar pada materi kelas AI Agent & PHP di infokoding.

BAB 22

Best Practice Pengembangan AI Agent

Best practice lengkap untuk membangun AI Agent PHP yang aman, andal, dan hemat biaya: dari keamanan API Key, validasi input, penanganan error, hingga strategi optimasi token.

Terakhir diperbarui:

Checklist Best Practice

  • ✅ API Key tersimpan di .env, tidak hardcode
  • ✅ Semua input divalidasi dan di-escape sebelum diproses
  • ✅ Rate limiting aktif untuk semua endpoint agent
  • ✅ Spending limit diset di dashboard OpenAI
  • ✅ Logging tersimpan untuk semua request dan error
  • ✅ Max iterations dan max tokens dibatasi

Keamanan API Key

  • Simpan di .env, bukan di kode atau database.
  • Set spending limit di platform.openai.com.
  • Rotate API key secara berkala (minimal setiap 90 hari).
  • Gunakan key yang berbeda untuk development dan production.
  • Monitor penggunaan API secara rutin di dashboard OpenAI.

Validasi Input yang Ketat

function validateAgentInput(string $input): string
{
    // Hapus whitespace berlebih
    $input = trim($input);

    // Batasi panjang input
    if (strlen($input) > 4000) {
        throw new \InvalidArgumentException('Input terlalu panjang (maksimum 4000 karakter)');
    }

    // Escape HTML untuk mencegah XSS jika ditampilkan di browser
    return htmlspecialchars($input, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}

// Validasi argumen tool dari AI
function validateToolArgs(array $args, array $schema): void
{
    $required = $schema['required'] ?? [];
    foreach ($required as $field) {
        if (!isset($args[$field]) || $args[$field] === '') {
            throw new \InvalidArgumentException("Field '$field' wajib diisi");
        }
    }
}

Penanganan Error yang Baik

// Hierarki exception yang jelas
class AgentException extends \RuntimeException {}
class ToolExecutionException extends AgentException {}
class ApiLimitException extends AgentException {}

// Handler global
set_exception_handler(function (\Throwable $e) use ($logger) {
    $logger->error('Unhandled Exception', [
        'class'   => get_class($e),
        'message' => $e->getMessage(),
        'file'    => $e->getFile(),
        'line'    => $e->getLine(),
        'trace'   => $e->getTraceAsString(),
    ]);

    http_response_code(500);
    echo json_encode(['error' => 'Terjadi kesalahan internal. Silakan coba lagi.']);
});

Strategi Optimasi Biaya API

  1. Gunakan model terkecil yang cukup: gpt-4o-mini untuk 80% kasus, gpt-4o hanya untuk kasus kompleks.
  2. Cache respons identik: Hemat 100% biaya untuk query yang berulang.
  3. Compress history: Summarize percakapan panjang alih-alih mengirim semua history.
  4. Set max_tokens yang tepat: Jangan set terlalu tinggi untuk task singkat.
  5. Batasi iterasi agent: Max 5-8 iterasi untuk mencegah loop tak berguna.
  6. Monitor dan alert: Set alert email jika spending melebihi threshold harian.

Monitoring dan Alerting

// Kirim alert jika biaya harian melebihi threshold
function checkDailySpendingAlert(PDO $pdo, float $alertThreshold = 5.0): void
{
    $stmt = $pdo->query(
        'SELECT SUM(total_tokens) AS tokens
         FROM agent_usage_logs
         WHERE DATE(created_at) = CURDATE()'
    );
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    $tokens = (int) ($row['tokens'] ?? 0);

    // Estimasi biaya (gpt-4o-mini: ~$0.60/1M output tokens)
    $estimatedCost = $tokens / 1_000_000 * 0.60;

    if ($estimatedCost >= $alertThreshold) {
        mail(
            'admin@domain.com',
            '🚨 Alert: Biaya AI Agent Harian Tinggi',
            "Estimasi biaya hari ini: \${$estimatedCost}\nTotal token: {$tokens}"
        );
    }
}

Poin Kunci Bab 22

Best practice bukan sekadar panduan teknis — ini adalah filosofi membangun sistem yang bertanggung jawab. AI Agent yang baik bukan hanya yang pintar, tapi yang aman, andal, dan berkelanjutan secara finansial.