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.
Daftar Isi
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
- Gunakan model terkecil yang cukup:
gpt-4o-miniuntuk 80% kasus,gpt-4ohanya untuk kasus kompleks. - Cache respons identik: Hemat 100% biaya untuk query yang berulang.
- Compress history: Summarize percakapan panjang alih-alih mengirim semua history.
- Set max_tokens yang tepat: Jangan set terlalu tinggi untuk task singkat.
- Batasi iterasi agent: Max 5-8 iterasi untuk mencegah loop tak berguna.
- 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.