Prasyarat Programatik
Blokir pengembalian dana sampai identitas terverifikasi, melalui kode.
Prasyarat Programatik adalah pelajaran Claude Architect gratis di CoddyKit. Ini adalah pelajaran 3 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 Claude Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Claude Architect mencakup 4 pelajaran total.
Pengembalian Dana yang Tidak Boleh Pernah Terjadi
Bayangkan agen dukungan pelanggan yang memiliki alat process_refund. Model ini cerdas, tetapi juga probabilistik. Kira-kira 9 dari 10 kali model mengikuti instruksi Anda untuk memverifikasi pelanggan terlebih dahulu. Pada kali kesepuluh, karena perintah yang tidak biasa atau percakapan yang membingungkan, model mengembalikan dana kepada orang asing yang belum terverifikasi.
Untuk tindakan keuangan, tingkat keberhasilan 90% adalah liabilitas, bukan fitur. Pelajaran ini membahas cara menutup kesenjangan 10% tersebut dengan prasyarat program: gerbang pada tingkat kode yang deterministik dan memblokir pengembalian dana sampai identitas terverifikasi — setiap kali.
Perintah Membujuk, Kode Menjamin
Ada dua cara untuk menegakkan aturan dalam agen:
- Panduan dalam perintah — "Selalu verifikasi pelanggan sebelum mengembalikan dana." Ini dapat diandalkan sekitar 90%. Model memutuskan apakah akan mematuhinya.
- Penegakan program — kait atau pemeriksaan kode yang berjalan secara deterministik. Ini dapat diandalkan 100%. Model tidak dapat mengesampingkannya.
Aturan praktis ujian: ketika kegagalan menimbulkan konsekuensi keuangan, hukum, atau keselamatan, Anda tidak mempercayai perintah. Simpan kode keras untuk jaminan, dan biarkan model membuat keputusan yang terbuka.
Apa Arti Sebenarnya dari 'Prasyarat'
Prasyarat program adalah fakta yang harus ditetapkan dalam keadaan terverifikasi sebelum tindakan sensitif diizinkan untuk dilanjutkan. Dalam kasus kita: pengembalian dana diblokir sampai get_customer mengembalikan catatan dengan identitas terverifikasi.
Ini bukan model yang berjanji bahwa ia telah melakukan pemeriksaan. Kode Anda mengamati hasil alat yang sebenarnya dan menolak menjalankan process_refund kecuali fakta verifikasi benar-benar tersedia. Jaminan berasal dari data, bukan dari narasi model.
Ringkasan Perulangan Agen
Untuk membatasi alat, Anda harus mengetahui di bagian mana dalam perulangan Anda perlu melakukan intervensi. Pada setiap giliran: Anda mengirim riwayat pesan lengkap, memeriksa stop_reason, dan jika nilainya tool_use, Anda menjalankan alat yang diminta, menambahkan hasilnya, lalu mengulangi perulangan sampai end_turn.
Prasyarat berada pada langkah "menjalankan alat yang diminta" tersebut. Ketika model meminta process_refund, kode Anda memeriksa keadaan yang telah terkumpul sebelum menjalankannya. Model mengusulkan; kode Anda memutuskan.
stop_reason = response.stop_reason # 'tool_use' | 'end_turn' | ...
for block in response.content:
if block.type == "tool_use":
# Intercept here, BEFORE executing the tool
result = dispatch_tool(block.name, block.input, state)
tool_results.append(result)
# Loop continues until stop_reason == 'end_turn'Melacak Keadaan Verifikasi
Prasyarat memerlukan sumber kebenaran. Simpan objek keadaan kecil di sisi server yang mencatat apa yang benar-benar telah ditetapkan dalam percakapan ini — bukan apa yang dikatakan telah dilakukan oleh model.
Ketika get_customer mengembalikan hasil, pengirim Anda membaca muatan nyata dan menetapkan penanda hanya jika catatan tersebut benar-benar terverifikasi. Keadaan ini adalah bukti bagi penjaga gerbang.
state = {"customer_id": None, "identity_verified": False}
def handle_get_customer(tool_input, state):
record = lookup_customer(tool_input["query"])
if record and record["identity_status"] == "verified":
state["customer_id"] = record["id"]
state["identity_verified"] = True
return recordGerbang Itu Sendiri
Sekarang hubungkan prasyaratnya. Ketika model meminta process_refund, kode Anda terlebih dahulu memeriksa state["identity_verified"]. Jika fakta tersebut belum ditetapkan, Anda tidak memanggil bagian belakang pengembalian dana — Anda mengembalikan hasil alat terstruktur yang memberi tahu model alasan pemblokiran dan tindakan berikutnya.
Yang penting, Anda mengembalikannya sebagai hasil alat normal yang dapat dibaca dan ditindaklanjuti oleh model, bukan sebagai pengecualian yang dilempar dan menyebabkan perulangan berhenti.
def handle_process_refund(tool_input, state):
if not state["identity_verified"]:
return {
"isError": True,
"errorCategory": "permission",
"isRetryable": False,
"message": "Refund blocked: identity not verified. "
"Call get_customer and verify the ID first."
}
return refund_backend.process(tool_input) # only reachable when verifiedMengapa Kesalahan Terstruktur Lebih Baik daripada Kerusakan
Kegagalan umum seperti "Operation failed" menghalangi pemulihan — model tidak dapat mengetahui mengapa kegagalan terjadi atau apa yang harus dilakukan selanjutnya. Kesalahan terstruktur memungkinkan pengalihan yang cerdas.
Sertakan: isError: true, errorCategory (sementara / validasi / bisnis / izin), isRetryable, message yang dapat dibaca manusia, dan idealnya tindakan yang dicoba. Dalam kasus ini kategorinya adalah permission dan isRetryable bernilai false sampai prasyarat terpenuhi — sehingga model tahu untuk melakukan verifikasi terlebih dahulu, bukan mencoba ulang pengembalian dana secara membabi buta.
Kait: Penegakan di Luar Alat
Pemeriksaan pengirim di atas adalah salah satu bentuk prasyarat. Ujian juga mengharapkan Anda mengetahui kait untuk tugas yang sama. Kait panggilan keluar mencegat pemanggilan alat dan dapat memblokir tindakan yang melanggar kebijakan — misalnya pengembalian dana di atas $500, atau pengembalian dana apa pun untuk akun yang belum terverifikasi.
Kait bersifat 100% deterministik; perintah bersifat probabilistik sekitar 90%. Kait PostToolUse juga dapat mencegat hasil alat sebelum model melihatnya. Bagaimanapun, jaminan ditegakkan dalam kode yang tidak dapat dibujuk oleh model untuk dilewati.
Melapiskan Kedua Kondisi
Kebijakan nyata sering kali terdiri dari beberapa syarat: blokir pengembalian dana kecuali identitas telah diverifikasi DAN jumlahnya berada dalam ambang yang diizinkan. Kedua pemeriksaan tersebut adalah prasyarat deterministik; tidak satu pun boleh ditempatkan dalam perintah.
Pemeriksaan verifikasi melindungi siapa; pemeriksaan ambang melindungi berapa banyak. Pelanggaran salah satunya mengembalikan hasil yang terstruktur dan dapat ditindaklanjuti — eskalasikan kasus ambang kepada manusia, atau arahkan model kembali untuk memverifikasi dalam kasus identitas.
def handle_process_refund(tool_input, state):
if not state["identity_verified"]:
return blocked("permission", "Verify identity via get_customer first.")
if tool_input["amount"] > 500:
return blocked("business",
"Amount exceeds $500 policy limit. Use escalate_to_human.")
return refund_backend.process(tool_input)Jangan Keliru dengan Batas Iterasi
Prasyarat adalah jaminan kebenaran — prasyarat memastikan fakta tertentu berlaku sebelum tindakan tertentu dilakukan. Jangan keliru membedakannya dengan jaring pengaman perulangan.
- Anda tetap menghentikan berdasarkan
stop_reason, bukan dengan mengurai teks untuk mencari kata seperti "selesai" atau "terverifikasi". - Batas iterasi adalah jaring pengaman terhadap perulangan yang tidak terkendali, tidak pernah menjadi mekanisme penghentian utama — dan tidak pernah menjadi cara untuk menegakkan kebijakan bisnis.
Prasyarat bersifat terarah: secara deterministik membatasi satu tindakan berdasarkan satu fakta terverifikasi, sementara model tetap menggerakkan percakapan.
Waktu Nyata Berarti Tanpa API Batch
Satu jebakan arsitektur lagi. Prasyarat verifikasi adalah pemeriksaan yang memblokir dan sensitif terhadap waktu — pengembalian dana tidak dapat dilanjutkan sampai pemeriksaan tersebut selesai dalam percakapan langsung.
Hal itu menyingkirkan API Message Batches: biayanya 50% lebih murah, tetapi memiliki jendela hingga 24 jam, tidak memiliki SLA latensi, dan tidak mendukung pemanggilan alat dalam beberapa giliran. Batch ditujukan untuk audit dan laporan semalam, bukan untuk pengaman sebaris yang sedang ditunggu pelanggan. Jalankan prasyarat secara sinkron dalam perulangan agen.
Pemeriksaan Singkat: Menegakkan Aturan Pengembalian Dana
Arsitek solusi harus menjamin bahwa process_refund tidak pernah dijalankan untuk pelanggan yang identitasnya belum diverifikasi oleh get_customer. Tindakan tersebut memiliki risiko keuangan dan hukum. Desain mana yang memenuhi persyaratan tersebut?
Ringkasan: Batasi dalam Kode
Poin-poin penting untuk prasyarat terprogram:
- Uang, hukum, keselamatan → deterministik. Prompt memiliki keandalan ~90%; hook dan prasyarat kode memiliki keandalan 100%.
- Gunakan fakta yang terverifikasi sebagai gerbang, bukan narasi. Lacak keadaan nyata dari
get_customer; blokirprocess_refundsampaiidentity_verifiedbernilai true. - Lakukan intersepsi dalam alur. Periksa sebelum menjalankan alat yang diminta model; gunakan hook untuk memblokir pelanggaran kebijakan seperti pengembalian dana di atas $500.
- Gagal dengan struktur. Kembalikan
isError,errorCategory,isRetryable, dan pesan yang jelas agar model dapat pulih. - Tetap sinkron. Hentikan berdasarkan
stop_reason, bukan batas iterasi atau penguraian teks — dan jangan pernah menggunakan Batch API untuk pemeriksaan pemblokiran.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 26
- Pelajaran
- 104
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Prasyarat Programatik” gratis?
Ya — teks lengkap “Prasyarat Programatik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Claude Architect, upgrade ke CoddyKit PRO. Kursus Claude Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Prasyarat Programatik”?
Blokir pengembalian dana sampai identitas terverifikasi, melalui kode. Kamu berlatih Claude Architect 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 Claude Architect?
Tidak diperlukan pengalaman sebelumnya. Claude Architect 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 3 dari 4.
Berapa lama pelajaran “Prasyarat Programatik” 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 Claude Architect ini?
Ya. Setiap pelajaran Claude Architect 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
- Hook PostToolUse dan Panggilan Keluar
- Penegakan Deterministik vs Perintah
- Prasyarat Programatik
- Protokol Serah Terima Terstruktur