Pelajari bagaimana LLM menafsirkan aturan bisnis, melacak status alur kerja, dan memverifikasi keputusan menggunakan prompt, alat, pengujian, dan tinjauan manusia—bukan hanya kode.

Ketika orang bertanya apakah sebuah LLM bisa “menalar tentang aturan bisnis,” biasanya yang dimaksud lebih menantang daripada “bisakah ia menulis pernyataan if/else.” Penalaran aturan bisnis berarti mampu menerapkan kebijakan secara konsisten, menjelaskan keputusan, menangani pengecualian, dan tetap selaras dengan langkah alur kerja saat ini—terutama ketika input tidak lengkap, berantakan, atau berubah.
Generasi kode terutama soal menghasilkan sintaks yang valid dalam bahasa target. Penalaran aturan soal mempertahankan intent.
Sebuah model bisa menghasilkan kode yang sepenuhnya valid namun tetap menghasilkan outcome bisnis yang salah karena:
Dengan kata lain, kebenaran bukanlah “apakah itu kompilasi?” Melainkan “apakah itu sesuai dengan keputusan bisnis, setiap saat, dan bisakah kita membuktikannya?”
LLM dapat membantu menerjemahkan kebijakan ke representasi aturan terstruktur, menyarankan jalur keputusan, dan menyusun penjelasan untuk manusia. Namun mereka tidak otomatis tahu aturan mana yang otoritatif, sumber data mana yang tepercaya, atau pada langkah mana kasus berada. Tanpa batasan, mereka mungkin yakin memilih jawaban yang plausibel daripada jawaban yang diatur.
Jadi tujuannya bukan “membiarkan model memutuskan,” melainkan memberi struktur dan pemeriksaan agar model dapat membantu secara andal.
Pendekatan praktis terlihat seperti sebuah pipeline:
Itu yang membedakan potongan kode yang cerdas dengan sistem yang dapat mendukung keputusan bisnis nyata.
Sebelum membahas bagaimana LLM “menalar,” ada baiknya memisahkan dua hal yang sering digabungkan tim: aturan bisnis dan alur kerja.
Aturan bisnis adalah pernyataan keputusan yang organisasi Anda ingin diterapkan secara konsisten. Mereka muncul sebagai kebijakan dan logika seperti:
Aturan biasanya dirumuskan sebagai “IF X, THEN Y” (kadang dengan pengecualian), dan mereka harus menghasilkan outcome yang jelas: setujui/tolak, harga A/harga B, minta info tambahan, dan sebagainya.
Sebuah alur kerja adalah proses yang memindahkan pekerjaan dari awal hingga selesai. Ini kurang tentang memutuskan apa yang diizinkan dan lebih tentang apa yang terjadi selanjutnya. Alur kerja sering mencakup:
Bayangkan permintaan pengembalian dana.
Kutipan aturan: “Pengembalian dana diperbolehkan dalam 30 hari sejak pembelian. Pengecualian: unduhan digital tidak dapat dikembalikan setelah diakses. Pengecualian: chargeback harus dieskalasi.”
Cuplikan alur kerja:
Aturan menjadi rumit ketika mereka bertentangan (“pelanggan VIP selalu mendapat pengembalian” vs. “unduhan digital tidak pernah”), bergantung pada konteks yang hilang (apakah unduhan sudah diakses?), atau menyembunyikan kasus tepi (bundel, pengembalian sebagian, undang-undang regional). Alur kerja menambah lapisan lain: keputusan harus tetap konsisten dengan status saat ini, tindakan sebelumnya, dan tenggat waktu.
LLM tidak “memahami” aturan bisnis seperti manusia. Mereka menghasilkan kata berikutnya yang paling mungkin berdasarkan pola yang dipelajari dari banyak teks. Itulah mengapa LLM bisa terdengar meyakinkan bahkan saat menebak—atau saat diam-diam mengisi detail yang tidak disediakan.
Keterbatasan ini penting untuk alur kerja dan logika keputusan. Model mungkin menerapkan aturan yang terdengar benar (“karyawan selalu butuh persetujuan manajer”) meskipun kebijakan sebenarnya memiliki pengecualian (“hanya di atas $500” atau “hanya untuk kontraktor”). Ini adalah mode kegagalan umum: yakin tapi salah menerapkan aturan.
Meskipun tanpa “pemahaman” sejati, LLM dapat membantu jika Anda memperlakukan mereka sebagai asisten terstruktur:
Kuncinya adalah menempatkan model pada posisi di mana ia tidak mudah melantur ke improvisasi.
Cara praktis mengurangi ambiguitas adalah mengharuskan keluaran terbatasi: minta LLM merespons dalam skema atau template tetap (misalnya, JSON dengan field tertentu, atau tabel dengan kolom wajib). Ketika model harus mengisi rule_id, conditions, exceptions, dan decision, lebih mudah melihat celah dan memvalidasi keluaran secara otomatis.
Format terbatasi juga membuat lebih jelas ketika model tidak tahu sesuatu. Jika field wajib hilang, Anda bisa memaksa pertanyaan tindak lanjut alih-alih menerima jawaban goyah.
Intinya: “penalaran” LLM paling baik dipandang sebagai generasi berbasis pola yang dipandu oleh struktur—berguna untuk mengorganisir dan memeriksa aturan, tetapi berisiko jika diperlakukan sebagai pembuat keputusan yang tak terkalahkan.
Dokumen kebijakan ditulis untuk manusia: mereka mencampur tujuan, pengecualian, dan “akal sehat” dalam paragraf yang sama. LLM dapat merangkum teks itu, tetapi mereka akan mengikuti aturan lebih andal ketika Anda mengubah kebijakan menjadi input yang eksplisit dan dapat diuji.
Representasi aturan yang baik berbagi dua sifat: tidak ambigu dan dapat diperiksa.
Tulis aturan sebagai pernyataan yang bisa Anda uji:
Aturan dapat diberikan ke model dalam beberapa bentuk:
Kebijakan nyata saling bertentangan. Ketika dua aturan tidak setuju, model memerlukan skema prioritas yang jelas. Pendekatan umum:
Nyatakan aturan konflik secara langsung, atau enkode (misalnya, priority: 100). Kalau tidak, LLM mungkin “merata-ratakan” aturan.
Teks kebijakan asli:
“Refunds are available within 30 days for annual plans. Monthly plans are non-refundable after 7 days. If the account shows fraud or excessive chargebacks, do not issue a refund. Enterprise customers need Finance approval for refunds over $5,000.”
Structured rules (YAML):
rules:
- id: R1
statement: "IF plan_type = annual AND days_since_purchase <= 30 THEN refund MAY be issued"
priority: 10
- id: R2
statement: "IF plan_type = monthly AND days_since_purchase > 7 THEN refund MUST NOT be issued"
priority: 20
- id: R3
statement: "IF fraud_flag = true OR chargeback_rate = excessive THEN refund MUST NOT be issued"
priority: 100
- id: R4
statement: "IF customer_tier = enterprise AND refund_amount > 5000 THEN finance_approval MUST be obtained"
priority: 50
conflict_resolution: "Higher priority wins; MUST NOT overrides MAY"
Sekarang model tidak menebak apa yang penting—ia menerapkan set aturan yang bisa Anda tinjau, uji, dan versi.
Alur kerja bukan hanya sekumpulan aturan; itu adalah urutan peristiwa di mana langkah sebelumnya mengubah apa yang seharusnya terjadi selanjutnya. Memori itu adalah status: fakta-fakta saat ini tentang kasus (siapa mengirim apa, apa yang sudah disetujui, apa yang menunggu, dan tenggat yang berlaku). Jika Anda tidak melacak status secara eksplisit, alur kerja akan rusak dengan cara yang dapat diprediksi—persetujuan ganda, melewatkan pemeriksaan yang diperlukan, membalik keputusan, atau menerapkan kebijakan yang salah karena model tidak dapat menebak apa yang sudah terjadi.
Anggap status sebagai papan skor alur kerja. Ini menjawab: Di mana kita sekarang? Apa yang sudah dilakukan? Apa yang boleh terjadi selanjutnya? Untuk LLM, memiliki ringkasan status yang jelas mencegahnya mengulang langkah sebelumnya atau menebak.
Saat memanggil model, sertakan payload status ringkas bersamaan dengan permintaan pengguna. Field yang berguna:
manager_review: approved, finance_review: pending)Hindari menumpahkan setiap pesan historis. Sebaliknya, berikan status saat ini plus jejak audit singkat dari transisi kunci.
Perlakukan engine alur kerja (database, sistem tiket, atau orchestrator) sebagai sumber kebenaran tunggal. LLM harus membaca status dari sistem itu dan mengusulkan tindakan selanjutnya, tetapi sistem harus menjadi otoritas yang merekam transisi. Ini mengurangi “state drift,” di mana narasi model menyimpang dari kenyataan.
{
"request_id": "TRV-10482",
"workflow": "travel_reimbursement_v3",
"current_step": "finance_review",
"step_status": {
"submission": "complete",
"manager_review": "approved",
"finance_review": "pending",
"payment": "not_started"
},
"actors": {
"employee_id": "E-2291",
"manager_id": "M-104",
"finance_queue": "FIN-AP"
},
"amount": 842.15,
"currency": "USD",
"submitted_at": "2025-12-12T14:03:22Z",
"last_state_update": "2025-12-13T09:18:05Z",
"flags": {
"receipt_missing": false,
"policy_exception_requested": true,
"needs_escalation": false
}
}
Dengan snapshot seperti ini, model dapat tetap konsisten: ia tidak akan meminta persetujuan manajer lagi, ia akan fokus pada pemeriksaan finance, dan ia dapat menjelaskan keputusan berdasarkan flag dan langkah saat ini.
Prompt yang baik tidak hanya meminta jawaban—ia menetapkan ekspektasi bagaimana model harus menerapkan aturan Anda dan bagaimana ia harus melaporkan hasil. Tujuannya keputusan yang dapat direproduksi, bukan prosa yang pandai.
Berikan model peran konkret yang terkait dengan proses Anda. Tiga peran yang bekerja baik bersama:
Anda bisa menjalankan ini secara berurutan (“analyst → validator → agent”) atau minta ketiga keluaran dalam satu respons terstruktur.
Alih-alih meminta “chain-of-thought,” tentukan langkah dan artefak yang terlihat:
Ini membuat model terorganisir sambil fokus pada deliverable: aturan apa yang digunakan dan outcome apa yang mengikuti.
Penjelasan bebas mudah melantur. Minta rasional ringkas yang menunjuk sumber:
Ini mempercepat peninjauan dan membantu debugging ketidaksepakatan.
Gunakan template tetap setiap kali:
Template mengurangi ambiguitas dan mendorong model untuk menampilkan celah sebelum mengambil tindakan yang salah.
LLM dapat menulis jawaban yang meyakinkan meskipun ia kekurangan fakta kunci. Itu berguna untuk drafting, tetapi berisiko untuk keputusan aturan bisnis. Jika model harus menebak status akun, tier pelanggan, tarif pajak regional, atau apakah batas sudah tercapai, Anda akan mendapatkan kesalahan yang tampak yakin.
Alat menyelesaikan itu dengan mengubah “penalaran” menjadi proses dua langkah: ambil bukti dulu, putuskan kemudian.
Dalam sistem yang berat aturan dan alur kerja, beberapa alat sederhana melakukan sebagian besar pekerjaan:
Kuncinya adalah model tidak “mencipta” fakta operasional—ia memintanya.
Meskipun Anda menyimpan semua kebijakan di satu tempat, jarang Anda ingin menempelkan semuanya ke prompt. Retrieval membantu dengan memilih hanya fragmen yang paling relevan untuk kasus saat ini—misalnya:
Ini mengurangi kontradiksi dan membuat model tidak mengikuti aturan usang hanya karena muncul lebih awal dalam konteks.
Pola andal adalah memperlakukan hasil alat sebagai bukti yang harus dikutip model dalam keputusannya. Misalnya:
get_account(account_id) → status="past_due", plan="Business", usage_this_month=12000retrieve_policies(query="overage fee Business plan") → returns rule: “Overage fee applies above 10,000 units at $0.02/unit.”calculate_overage(usage=12000, threshold=10000, rate=0.02) → $40.00Sekarang keputusan bukan tebakan: itu kesimpulan yang berakar pada input spesifik (“past_due”, “12,000 units”, “$0.02/unit”). Jika nanti diaudit, Anda dapat melihat persis fakta dan versi aturan mana yang digunakan—dan memperbaiki bagian yang tepat ketika sesuatu berubah.
Teks bebas fleksibel, tetapi juga cara termudah agar alur kerja rusak. Model bisa memberikan jawaban “masuk akal” yang tidak bisa diotomasi (“terlihat baik bagi saya”) atau tidak konsisten antar langkah (“approve” vs. “approved”). Keluaran terbatasi menyelesaikan itu dengan memaksa setiap keputusan ke bentuk yang dapat diprediksi.
Pola praktis adalah mengharuskan model merespons dengan satu objek JSON yang sistem Anda bisa parse dan rute:
{
"decision": "needs_review",
"reasons": [
"Applicant provided proof of income, but the document is expired"
],
"next_action": "request_updated_document",
"missing_info": [
"Income statement dated within the last 90 days"
],
"assumptions": [
"Applicant name matches across documents"
]
}
Struktur ini membuat keluaran berguna bahkan ketika model tidak bisa memutuskan sepenuhnya. missing_info dan assumptions mengubah ketidakpastian menjadi tindak lanjut yang dapat dikerjakan, bukan tebakan tersembunyi.
Untuk mengurangi variabilitas, definisikan nilai yang diizinkan (enum) untuk field penting. Misalnya:
decision: approved | denied | needs_reviewnext_action: approve_case | deny_case | request_more_info | escalate_to_humanDengan enum, sistem turunannya tidak perlu menafsirkan sinonim, tanda baca, atau nada. Mereka cukup bercabang pada nilai yang dikenal.
Skema berfungsi seperti pembatas. Mereka:
reasons).decision dan next_action.Hasilnya: lebih sedikit ambiguitas, lebih sedikit kegagalan kasus tepi, dan keputusan yang dapat bergerak melalui alur kerja secara konsisten.
Bahkan model yang diprompt dengan baik dapat “terdengar benar” sementara ia diam-diam melanggar aturan, melewatkan langkah yang wajib, atau mengada-ada nilai. Validasi adalah jaring pengaman yang mengubah jawaban yang mungkin menjadi keputusan yang dapat diandalkan.
Mulailah dengan memverifikasi bahwa Anda memiliki informasi minimum yang diperlukan untuk menerapkan aturan. Pre-checks harus dijalankan sebelum model membuat keputusan.
Pre-check khas meliputi field wajib (mis., tipe pelanggan, total pesanan, region), format dasar (tanggal, ID, mata uang), dan rentang yang diizinkan (jumlah non-negatif, persentase dibatasi 100%). Jika sesuatu gagal, kembalikan error yang jelas dan dapat ditindaklanjuti (“Missing ‘region’; cannot choose tax rule set”) alih-alih membiarkan model menebak.
Setelah model menghasilkan outcome, validasi bahwa ia konsisten dengan set aturan Anda.
Fokus pada:
Tambahkan “pass kedua” yang mengevaluasi kembali jawaban pertama. Ini bisa berupa panggilan model lain atau model yang sama dengan prompt validator yang hanya memeriksa kepatuhan, bukan kreativitas.
Pola sederhana: putaran pertama menghasilkan keputusan + rasional; putaran kedua mengembalikan valid atau daftar terstruktur dari kegagalan (field hilang, constraint dilanggar, interpretasi aturan ambigu).
Untuk setiap keputusan, catat input yang digunakan, versi aturan/kebijakan, dan hasil validasi (termasuk temuan putaran kedua). Ketika sesuatu salah, ini memungkinkan Anda mereproduksi kondisi persisnya, memperbaiki pemetaan aturan, dan mengonfirmasi koreksi—tanpa menebak apa yang “mungkin dimaksud” model.
Menguji fitur LLM yang bergantung aturan dan alur kerja lebih tentang “apakah ia membuat keputusan yang sama seperti manusia yang teliti, dengan alasan yang benar, setiap kali?” Berita baik: Anda dapat mengujinya dengan disiplin yang sama seperti logika keputusan tradisional.
Perlakukan setiap aturan sebagai fungsi: diberikan input, ia harus mengembalikan outcome yang bisa Anda asertkan.
Misalnya, jika Anda memiliki aturan pengembalian dana seperti “pengembalian dana diizinkan dalam 30 hari untuk barang belum dibuka,” tulis kasus terfokus dengan hasil yang diharapkan:
Unit test ini menangkap kesalahan off-by-one, field hilang, dan perilaku “membantu” model yang mencoba mengisi hal yang tidak diketahui.
Alur kerja gagal ketika status menjadi tidak konsisten antar langkah. Tes skenario mensimulasikan perjalanan nyata:
Tujuannya memverifikasi model menghormati status saat ini dan hanya mengambil transisi yang diizinkan.
Buat dataset terkurasi dari contoh nyata yang dianonimkan dengan outcome yang disepakati (dan rasional singkat). Versikan dan tinjau setiap kali kebijakan berubah. Gold set kecil (bahkan 100–500 kasus) sangat kuat karena mencerminkan realitas berantakan—data hilang, redaksi tidak biasa, keputusan borderline.
Lacak distribusi keputusan dan sinyal kualitas dari waktu ke waktu:
Padukan pemantauan dengan rollback aman: simpan prompt/paket aturan sebelumnya, beri feature flag pada versi baru, dan siap untuk mengembalikan ketika metrik memburuk. Untuk playbook operasional dan gate rilis, lihat /blog/validation-strategies.
Jika Anda mengimplementasikan pola di atas, biasanya Anda membangun sistem kecil di sekitar model: penyimpanan status, panggilan alat, retrieval, validasi skema, dan orchestrator alur kerja. Koder.ai adalah cara praktis untuk membuat prototipe dan mengirim jenis asisten berbasis alur kerja itu lebih cepat: Anda dapat mendeskripsikan alur kerja di chat, menghasilkan web app bekerja (React) plus layanan backend (Go dengan PostgreSQL), dan iterasi dengan aman menggunakan snapshot dan rollback.
Ini penting untuk penalaran aturan bisnis karena “pembatas” seringkali hidup di aplikasi, bukan prompt:
LLM bisa sangat baik dalam menerapkan kebijakan sehari-hari, tetapi mereka bukan mesin aturan deterministik. Perlakukan mereka sebagai asisten keputusan yang butuh pembatas, bukan otoritas akhir.
Tiga mode kegagalan muncul berulang dalam alur kerja yang berat aturan:
Tambahkan tinjauan wajib ketika:
Alih-alih membiarkan model “mencipta sesuatu,” definisikan langkah selanjutnya yang jelas:
Gunakan LLM dalam alur kerja yang berat aturan ketika Anda bisa menjawab “ya” pada sebagian besar pertanyaan ini:
Jika tidak, biarkan LLM tetap dalam peran draf/asisten sampai kontrol tersebut ada.