Eskalasi dengan Keterlibatan Manusia
Tentukan pemicu eskalasi yang menjeda agen dan meminta panduan manusia ketika tingkat keyakinan rendah, tindakan destruktif akan dilakukan, atau anggaran percobaan ulang telah habis.
Eskalasi dengan Keterlibatan Manusia adalah pelajaran AI Engineering Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Kapan Agen Membutuhkan Panduan Manusia
Agen yang sepenuhnya otonom sesuai untuk tugas yang terdefinisi dengan baik dan berisiko rendah. Namun, beberapa situasi memerlukan penilaian manusia: instruksi yang ambigu, keyakinan model yang rendah, tindakan destruktif yang tidak dapat dibatalkan, atau tugas yang kegagalannya memiliki konsekuensi serius. Eskalasi human-in-the-loop (HITL) menjeda agen pada titik keputusan ini dan meminta masukan manusia sebelum melanjutkan, sehingga menggabungkan efisiensi otomatisasi dengan penilaian manusia.
Menentukan Pemicu Eskalasi
Eskalasi harus dipicu oleh kondisi yang spesifik dan terukur, bukan intuisi yang samar. Tentukan pemicu eskalasi yang eksplisit untuk aplikasi Anda. Pemicu yang umum meliputi: keyakinan model di bawah ambang batas, tindakan destruktif yang akan dilakukan, batas kebijakan yang mulai didekati, anggaran percobaan ulang yang habis, atau tugas yang melampaui batas waktunya. Dokumentasikan pemicu dalam kode sebagai konstanta bernama agar dapat disesuaikan tanpa mengubah logika alur kontrol.
from enum import Enum
class EscalationReason(Enum):
LOW_CONFIDENCE = 'low_confidence' # model uncertainty
DESTRUCTIVE_ACTION = 'destructive_action' # irreversible change
AMBIGUOUS_TASK = 'ambiguous_task' # unclear instructions
RETRY_BUDGET_EXHAUSTED = 'retry_exhausted' # too many failures
POLICY_BOUNDARY = 'policy_boundary' # approaching limit
HUMAN_REQUESTED = 'human_requested' # explicit request
TIMEOUT = 'timeout' # took too long
ESCALATION_THRESHOLDS = {
'min_confidence': 0.6,
'max_retries': 5,
'max_runtime_minutes': 30,
}Mendeteksi Keyakinan yang Rendah
Minta model menyatakan tingkat keyakinannya terhadap tindakan yang diusulkan sebelum menjalankannya. Skor keyakinan di bawah ambang batas Anda memicu eskalasi. Gunakan pemeriksaan keyakinan terstruktur yang memuat skor numerik dan alasan singkat agar peninjau manusia memahami dengan tepat mengapa agen tidak yakin. Alasan tersebut membantu manusia memberikan panduan yang terarah tanpa harus meninjau seluruh riwayat tugas.
from pydantic import BaseModel
class ConfidenceCheck(BaseModel):
proposed_action: str
confidence: float # 0.0 to 1.0
uncertainty_reason: str | None
proceed: bool
async def check_confidence(context: str, proposed_action: str) -> ConfidenceCheck:
return await judge_client.chat.completions.create(
model='gpt-4o',
response_model=ConfidenceCheck,
messages=[{
'role': 'user',
'content': f'Context: {context}\n\nI am about to: {proposed_action}\n\nHow confident am I that this is correct? Be honest about uncertainty.'
}]
)Mendeteksi Tindakan Destruktif
Beri tanda pada alat yang melakukan tindakan yang tidak dapat dibatalkan dengan penanda destructive=True dan wajibkan konfirmasi manusia sebelum alat tersebut dijalankan. Contohnya: menghapus file, mengirim email kepada pengguna nyata, membuat perubahan basis data yang tidak dapat dibatalkan, menagih pelanggan, atau menerbitkan konten secara publik. Agen harus berhenti pada tindakan-tindakan ini dan menunggu persetujuan manusia secara eksplisit meskipun agen sedang beroperasi secara otonom.
from dataclasses import dataclass
from typing import Callable
@dataclass
class Tool:
name: str
func: Callable
destructive: bool = False
description: str = ''
tools = [
Tool('search_web', search_web, destructive=False),
Tool('read_file', read_file, destructive=False),
Tool('write_file', write_file, destructive=True, description='Overwrites existing file'),
Tool('send_email', send_email, destructive=True, description='Sends real email to user'),
Tool('delete_records', delete_records, destructive=True, description='Permanent DB deletion'),
]
def requires_approval(tool: Tool) -> bool:
return tool.destructiveMenjeda Agen dan Menunggu Masukan
Saat pemicu eskalasi aktif, simpan checkpoint (agar tugas dapat dilanjutkan), buat catatan permintaan eskalasi, lalu beri tahu peninjau manusia. Agen berhenti memproses dan menunggu. Manusia meninjau eskalasi melalui dasbor atau notifikasi, memberikan panduan atau persetujuan, kemudian agen melanjutkan dari checkpoint dengan panduan tersebut disertakan sebagai pesan baru dalam riwayat.
import asyncio
async def escalate_and_wait(task_id: str, reason: EscalationReason, context: str,
question: str, timeout_hours: int = 24) -> str:
# Save checkpoint
save_checkpoint(load_checkpoint(task_id))
# Create escalation record
escalation_id = create_escalation(task_id, reason, context, question)
# Notify reviewer
notify_reviewer(escalation_id, question)
# Wait for response (polling with timeout)
deadline = asyncio.get_event_loop().time() + timeout_hours * 3600
while asyncio.get_event_loop().time() < deadline:
response = get_escalation_response(escalation_id)
if response:
return response.guidance
await asyncio.sleep(60) # check every minute
raise TimeoutError(f'Escalation {escalation_id} not answered within {timeout_hours}h')Membangun Antarmuka Peninjau
Peninjau manusia memerlukan antarmuka sederhana untuk menanggapi eskalasi. Minimal, tampilkan: deskripsi tugas, kemajuan agen sejauh ini, pertanyaan spesifik atau tindakan yang diusulkan yang memerlukan persetujuan, serta tombol Setujui, Tolak, dan Berikan Panduan. Catat setiap keputusan peninjau beserta identitas peninjau dan stempel waktunya untuk keperluan audit. Bot Slack atau formulir web sederhana sama-sama cocok untuk tim internal.
# FastAPI escalation endpoint
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class EscalationResponse(BaseModel):
escalation_id: str
decision: str # 'approve', 'reject', 'guide'
guidance: str | None = None
reviewer_id: str
@app.post('/escalations/{escalation_id}/respond')
async def respond_to_escalation(esc_id: str, response: EscalationResponse):
escalation = get_escalation(esc_id)
if not escalation or escalation.status != 'pending':
return {'error': 'Escalation not found or already resolved'}
save_escalation_response(esc_id, response)
return {'status': 'response_recorded', 'task_will_resume': True}Menyuntikkan Panduan Manusia ke dalam Konteks Agen
Setelah manusia memberikan tanggapan, masukkan panduan mereka sebagai pesan baru dalam riwayat percakapan agen sebelum melanjutkan. Nyatakan bahwa panduan tersebut berasal dari “supervisor” agar dapat dibedakan dari pengamatan agen sendiri. Agen kemudian dapat merujuk panduan ini pada langkah berikutnya. Jika manusia menolak tindakan yang diusulkan, sertakan instruksi tentang tindakan yang harus dilakukan sebagai gantinya.
def inject_human_guidance(messages: list, decision: str, guidance: str | None) -> list:
if decision == 'approve':
messages.append({
'role': 'user',
'content': 'Supervisor: Your proposed action has been approved. Proceed.'
})
elif decision == 'reject':
messages.append({
'role': 'user',
'content': f'Supervisor: Your proposed action was rejected. Instead: {guidance}'
})
elif decision == 'guide':
messages.append({
'role': 'user',
'content': f'Supervisor: Additional guidance: {guidance}'
})
return messagesMelacak Metrik Eskalasi
Pantau jumlah eskalasi, alasannya, dan waktu tanggapan. Jumlah eskalasi yang tinggi menunjukkan bahwa agen belum cukup yakin—mungkin tugasnya terlalu ambigu, model memerlukan instruksi yang lebih baik, atau ambang keyakinan ditetapkan terlalu rendah. Waktu tanggapan yang lama menunjukkan masalah beban kerja peninjau. Metrik ini membantu Anda menyeimbangkan otomatisasi dan keterlibatan manusia untuk meminimalkan gangguan yang tidak perlu, sekaligus tetap melibatkan manusia dalam keputusan yang benar-benar berisiko.
def escalation_report(db_connection, days: int = 7) -> dict:
# SQL query (pseudocode)
rows = db_connection.execute('''
SELECT
reason,
COUNT(*) as count,
AVG(EXTRACT(EPOCH FROM (responded_at - created_at)) / 3600) as avg_response_hours,
SUM(CASE WHEN decision = 'approve' THEN 1 ELSE 0 END) as approvals,
SUM(CASE WHEN decision = 'reject' THEN 1 ELSE 0 END) as rejections
FROM escalations
WHERE created_at > NOW() - INTERVAL '%s days'
GROUP BY reason
ORDER BY count DESC
''' % days).fetchall()
return [dict(r) for r in rows]Memperluas Otonomi Secara Bertahap
Mulailah dengan sensitivitas eskalasi yang tinggi (ambang keyakinan rendah dan eskalasi untuk semua tindakan destruktif), lalu secara bertahap kurangi frekuensi eskalasi setelah Anda semakin yakin terhadap perilaku agen. Lacak eskalasi mana yang menghasilkan keputusan Setujui dibandingkan koreksi yang sebenarnya. Tingkat persetujuan yang secara konsisten tinggi untuk jenis pemicu tertentu berarti Anda dapat mengotomatiskan pemicu tersebut dengan aman, sehingga mengurangi beban kerja manusia sambil tetap mempertahankan pengawasan pada bagian yang benar-benar penting.
# Autonomy expansion strategy:
# Week 1: escalate for ALL destructive actions
# Week 2: auto-approve file writes to /tmp (low-risk), escalate others
# Week 4: auto-approve all file writes, escalate only email/DB changes
# Week 8: auto-approve emails under 10 recipients, escalate mass emails
# Track approval rates per trigger type:
# Tool: write_file -> 98% approve -> safe to automate
# Tool: send_email -> 89% approve -> near-automate with content check
# Tool: delete_records -> 43% approve -> always escalatePenimpaan Darurat dan Pembatalan Tugas
Selalu sediakan mekanisme penimpaan darurat yang memungkinkan manusia segera membatalkan tugas agen yang sedang berjalan. Jika agen berperilaku keliru—memanggil alat yang seharusnya tidak dipanggil atau melakukan tindakan di luar cakupan yang dimaksudkan—manusia harus dapat menghentikannya dalam hitungan detik. Terapkan sinyal pembatalan (penanda basis data yang diperiksa agen pada setiap langkah) dan pastikan hasil pemanggilan alat dibuang jika agen dibatalkan di tengah langkah.
async def run_agent_with_cancel(task_id: str, messages: list) -> str:
for step in range(MAX_ITERATIONS):
# Check cancel flag at start of every step
if redis_client.get(f'agent:cancel:{task_id}'):
save_final_status(task_id, 'cancelled')
return 'Task cancelled by operator.'
response = await get_next_action(messages)
if response.is_final:
return response.answer
result = await execute_tool(response.tool, response.args)
messages.append({'role': 'user', 'content': result})
save_checkpoint_after_step(task_id, step, messages)
return 'Max iterations reached'Mengkalibrasi Ambang Eskalasi
Ambang eskalasi perlu disesuaikan. Jika ambang keyakinan terlalu tinggi, agen akan melakukan eskalasi pada hampir setiap tindakan sehingga peninjau kewalahan. Jika terlalu rendah, tindakan berisiko dapat lolos. Mulailah dengan ambang konservatif pada minggu pertama, lacak jumlah eskalasi dan tingkat persetujuan peninjau, lalu lakukan penyesuaian. Sistem yang stabil seharusnya melakukan eskalasi untuk 5–15% tugas karena masalah keyakinan dan hampir 100% untuk tindakan destruktif, dengan tingkat persetujuan keseluruhan di atas 80%.
# Threshold tuning guide:
# Escalation rate vs quality trade-off:
#
# confidence_threshold=0.8 -> 35% escalation rate (too many)
# confidence_threshold=0.6 -> 12% escalation rate (target)
# confidence_threshold=0.4 -> 4% escalation rate (too few)
#
# Weekly review of escalation decisions:
# - Approval rate > 90%: lower threshold (too conservative)
# - Approval rate < 70%: raise threshold (not catching real issues)
# - Target: 75-85% approval ratePemeriksaan Singkat
Uji pemahaman Anda tentang rancangan eskalasi dengan manusia dalam prosesnya.
Rangkuman Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa pemicu eskalasi menentukan kondisi yang tepat saat agen harus berhenti dan meminta panduan manusia, penanda tindakan destruktif pada alat menerapkan persyaratan persetujuan untuk operasi yang tidak dapat dibatalkan, dan perluasan otonomi secara bertahap memungkinkan Anda meningkatkan otomatisasi dengan aman seiring agen mendapatkan kepercayaan. Selanjutnya, kita akan merancang arsitektur produksi untuk proyek akhir kita.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Eskalasi dengan Keterlibatan Manusia” gratis?
Ya — teks lengkap “Eskalasi dengan Keterlibatan Manusia” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Engineering Academy, upgrade ke CoddyKit PRO. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Eskalasi dengan Keterlibatan Manusia”?
Tentukan pemicu eskalasi yang menjeda agen dan meminta panduan manusia ketika tingkat keyakinan rendah, tindakan destruktif akan dilakukan, atau anggaran percobaan ulang telah habis. Kamu berlatih AI Engineering Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Engineering Academy?
Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Eskalasi dengan Keterlibatan Manusia” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Engineering Academy ini?
Ya. Setiap pelajaran AI Engineering Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengklasifikasikan Mode Kegagalan Agen
- Koreksi Mandiri dan Pemberian Prompt Reflektif
- Pembuatan Titik Pemeriksaan dan Melanjutkan Tugas
- Eskalasi dengan Keterlibatan Manusia