0Pricing
AI Agents · Pelajaran

Alat Idempoten dan Efek Samping

Agen mungkin melakukan percobaan ulang—rancang alat agar pemanggilan dua kali tidak menggandakan tagihan atau pengiriman surel.

Alat Idempoten dan Efek Samping adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 1 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 Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Mengapa Idempotensi Penting

Perulangan agen mungkin melakukan percobaan ulang. Jika sebuah alat mengirim email atau menagih kartu kredit, percobaan ulang akan menggandakan tindakan tersebut. Idempotensi membuat "lakukan X lagi" tidak menghasilkan apa-apa jika X sudah terjadi.

Apa Itu Idempotensi

Sebuah operasi bersifat idempoten jika memanggilnya N kali menghasilkan efek yang sama seperti memanggilnya sekali. Contoh:

  • "Atur status pengguna menjadi aktif" — idempoten (mengaturnya kembali menjadi aktif tidak melakukan apa-apa)
  • "Tambah penghitung sebanyak 1" — NOT idempoten (setiap panggilan menambahkan 1 lagi)

Kunci Idempotensi

Untuk operasi yang tidak idempoten (pembayaran, email), gunakan kunci idempotensi:

import uuid

def create_payment(amount, idempotency_key):
    # Stripe accepts this header — returns the existing payment if key was used
    return stripe.Charge.create(
        amount=amount,
        currency='usd',
        source=token,
        idempotency_key=idempotency_key
    )

Buat Kunci dari Maksud

Gunakan hash dari (nama alat, argumen, id eksekusi) agar percobaan ulang yang identik menggunakan kembali kunci yang sama:

import hashlib, json

def intent_key(tool_name, args, run_id):
    payload = json.dumps([tool_name, args, run_id], sort_keys=True)
    return hashlib.sha256(payload.encode()).hexdigest()

print(intent_key('transfer_money', {'to': 'acc2', 'amount': 100}, 'run-1'))

Inventarisasi Efek Samping

Daftarkan alat yang memiliki efek samping:

  • SEND email / SMS
  • CHARGE / refund
  • CREATE / DELETE baris basis data
  • POST ke API eksternal yang mengubah keadaan

Alat baca-saja secara inheren bersifat idempoten. Fokuslah pada operasi tulis.

Bungkus Alat yang Memiliki Efek Samping

Tambahkan lapisan idempotensi dalam implementasi alat:

def send_email(to, subject, body, run_id):
    key = intent_key('send_email', {'to': to, 'subject': subject, 'body': body}, run_id)
    if redis.set(f'sent:{key}', 1, nx=True, ex=86400):
        smtp.send(to, subject, body)
        return {'sent': True}
    return {'sent': False, 'reason': 'already-sent'}

Konfirmasi Sebelum Bertindak

Untuk tindakan yang berisiko tinggi, tambahkan langkah konfirmasi:

def transfer_money(from_acc, to_acc, amount, confirmed=False):
    if not confirmed:
        return {'pending': True, 'msg': 'Call again with confirmed=True to proceed.'}
    return {'pending': False, 'msg': f'Transferred {amount} from {from_acc} to {to_acc}.'}

print(transfer_money('acc1', 'acc2', 100))
print(transfer_money('acc1', 'acc2', 100, confirmed=True))

Alat Dua Fase

Pisahkan alat menjadi fase "draf" dan "komit":

def draft_email(to, subject, body):
    draft_id = save_draft(to, subject, body)
    return {'draft_id': draft_id, 'preview': body[:200]}

def send_draft(draft_id):
    return smtp.send(load_draft(draft_id))

Tindakan Kompensasi

Jika Anda tidak dapat menghindari efek samping, tentukan alat "undo":

def refund_payment(payment_id):
    return stripe.Refund.create(payment=payment_id)
# Now an erroneous create_payment can be undone.

Log Audit

Setiap alat yang memiliki efek samping MUST mencatat: siapa yang memicunya, argumen apa yang digunakan, kapan dijalankan, dan hasilnya. Gunakan log terstruktur yang dapat Anda kueri nanti.

Batas Efek Samping per Eksekusi

Batasi efek samping per eksekusi sebagai pengaman:

if state.side_effect_count >= 5:
    return {'error': 'Side-effect budget exhausted for this run.'}

Mode Simulasi

Berguna selama pengembangan: alat mencatat tindakan yang WOULD dilakukan, tetapi tidak benar-benar menjalankannya:

import os
os.environ['DRY_RUN'] = '1'
DRY_RUN = os.getenv('DRY_RUN') == '1'

def send_email(to, subject, body):
    if DRY_RUN:
        print(f'would send email to {to}')
        return {'sent': False, 'dry_run': True}
    print(f'sending email to {to}')
    return {'sent': True, 'dry_run': False}

result = send_email('user@example.com', 'Hi', 'Hello there')
print(result)

Definisi

Apa arti "idempoten" bagi sebuah alat?

Ringkasan

Identifikasi efek samping. Gunakan kunci idempotensi. Bangun alat dua fase dan tindakan kompensasi. Audit semuanya. Gunakan simulasi selama pengembangan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Alat Idempoten dan Efek Samping” gratis?

Ya — teks lengkap “Alat Idempoten dan Efek Samping” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Alat Idempoten dan Efek Samping”?

Agen mungkin melakukan percobaan ulang—rancang alat agar pemanggilan dua kali tidak menggandakan tagihan atau pengiriman surel. Kamu berlatih AI Agents 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 Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents 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 1 dari 4.

Berapa lama pelajaran “Alat Idempoten dan Efek Samping” 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 Agents ini?

Ya. Setiap pelajaran AI Agents 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

  1. Alat Idempoten dan Efek Samping
  2. Percobaan Ulang dengan Jeda Eksponensial
  3. Batas Waktu dan Pemutus Sirkuit
  4. Memvalidasi Keluaran Alat (Pydantic)
← Kembali ke AI Agents