0Pricing
AI Prompt Engineering · Pelajaran

Analisis Akar Masalah untuk Perintah

Tentukan apakah kegagalan terjadi pada konteks, instruksi, format, atau kemampuan model.

Analisis Akar Masalah untuk Perintah adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 2 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 Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Mengapa Analisis Akar Masalah Penting

Ketika sebuah perintah gagal, ada banyak kemungkinan penyebab. Mengubah-ubah kata secara acak membuang waktu dan mungkin hanya memperbaiki gejala tanpa memperbaiki akar masalah — sehingga kegagalan yang sama muncul pada input yang sedikit berbeda.

Analisis akar masalah (RCA) adalah proses sistematis untuk mengisolasi alasan spesifik suatu perintah gagal, sehingga perbaikannya menangani masalah yang sebenarnya.

Empat Kategori Akar Masalah

Setiap kegagalan perintah dapat ditelusuri kembali ke salah satu dari empat akar masalah:

  1. Masalah konteks: model kekurangan informasi yang diperlukan untuk menjawab dengan benar
  2. Ambiguitas instruksi: instruksi memiliki beberapa interpretasi yang valid, dan model memilih interpretasi yang salah
  3. Konflik format: dua bagian perintah memberikan instruksi format yang bertentangan
  4. Batas kemampuan model: tugas memerlukan penalaran atau pengetahuan yang melampaui kemampuan model ini untuk dilakukan secara andal

Akar Masalah 1: Masalah Konteks

Masalah konteks terjadi ketika model menjawab dengan salah karena perintah tidak menyediakan informasi yang diperlukan. Model mengisi celah tersebut dengan data pelatihan — yang mungkin sudah usang, salah, atau berupa halusinasi.

Pengujian: berikan informasi yang hilang secara langsung dalam perintah dan lihat apakah jawaban membaik. Jika ya, perbaikannya adalah menambahkan konteks (misalnya melalui pengambilan RAG).

# Failing prompt — no context
prompt_v1 = 'What is the current price of our Pro plan?'

# Context problem test: inject the information
prompt_v2 = '''
Our pricing (as of today):
- Free: $0/month
- Pro: $19/month
- Enterprise: $99/month

Question: What is the current price of our Pro plan?
'''
# If v2 succeeds and v1 fails -> root cause is context problem

Akar Masalah 2: Ambiguitas Instruksi

Ambiguitas instruksi terjadi ketika perintah dapat ditafsirkan secara wajar dengan beberapa cara dan model memilih interpretasi yang salah.

Contoh: 'Ringkas secara singkat' — apakah 'secara singkat' berarti satu kalimat, satu paragraf, atau tiga poin? Model menebak. Pengujian: ganti frasa ambigu dengan spesifikasi yang tepat dan periksa apakah kegagalan teratasi.

# Ambiguous
prompt_ambiguous = 'Summarize the following article briefly.'

# Precise — ambiguity removed
prompt_precise = (
    'Summarize the following article in exactly 2 sentences. '
    'Do not exceed 50 words. Output only the summary, nothing else.'
)

# Test: if precise version succeeds, root cause was ambiguity
# Fix: replace vague qualifiers with exact specifications

Akar Masalah 3: Konflik Format

Konflik format terjadi ketika dua bagian perintah memberikan instruksi yang bertentangan. Model harus memilih salah satunya dan mengabaikan yang lain — biasanya memilih instruksi yang lebih baru atau lebih menonjol.

Contoh: perintah sistem mengatakan 'tanggapi dalam teks biasa', sedangkan pesan pengguna mengatakan 'gunakan markdown'. Model mungkin mengikuti salah satunya secara tidak konsisten.

# Format conflict example
system_prompt = 'You are a helpful assistant. Always respond in plain text without any formatting.'

user_message = 'List the top 5 benefits of exercise. Use markdown bullet points.'

# The model faces a conflict: plain text vs markdown.
# Detection: if output format is inconsistent across runs, look for conflicting instructions.

# Fix: ensure all format instructions agree. Move format to system prompt only.
system_prompt_fixed = (
    'You are a helpful assistant. '
    'Always respond using markdown bullet points for lists.'
)

Akar Masalah 4: Batas Kemampuan Model

Kegagalan batas kemampuan terjadi ketika tugas tersebut benar-benar melampaui hal yang dapat dilakukan model secara andal. Hal ini berbeda dari tiga penyebab lainnya — tidak ada perubahan pada perintah yang dapat sepenuhnya memperbaikinya.

Tanda-tandanya: tingkat kegagalan tetap tinggi meskipun instruksinya jelas dan konteksnya lengkap. Solusinya: gunakan model yang lebih canggih, pecah tugas menjadi beberapa langkah yang lebih sederhana, atau tambahkan langkah verifikasi.

# Capability limit test: try the same task on different models
models = ['gpt-4o-mini', 'gpt-4o', 'gpt-4o-2024-11-20']
results = {}

for model in models:
    resp = client.chat.completions.create(
        model=model,
        messages=[{'role': 'user', 'content': complex_reasoning_prompt}]
    )
    results[model] = evaluate(resp.choices[0].message.content)

# If accuracy improves with more capable models -> capability limit
for model, score in results.items():
    print(f'{model}: {score:.0%} accuracy')

Metode Isolasi

Untuk mengidentifikasi akar masalah yang sedang terjadi, gunakan isolasi sistematis:

  1. Jalankan perintah yang gagal dan klasifikasikan jenis kegagalannya (jawaban salah, format, dan sebagainya)
  2. Tambahkan informasi → jika berhasil diperbaiki: masalah konteks
  3. Perjelas instruksi → jika berhasil diperbaiki: ambiguitas
  4. Periksa kontradiksi → jika berhasil diperbaiki: konflik format
  5. Tingkatkan model → jika berhasil diperbaiki: batas kemampuan

Seharusnya hanya diperlukan satu perbaikan. Jika diperlukan beberapa perbaikan, berarti ada beberapa akar masalah.

def rca_test(base_prompt, test_input, expected_output):
    results = {}

    # Test 1: base (failing) prompt
    results['base'] = run_and_evaluate(base_prompt, test_input, expected_output)

    # Test 2: add context
    results['with_context'] = run_and_evaluate(
        base_prompt + '\nContext: ' + get_context(test_input),
        test_input, expected_output
    )

    # Test 3: clarify instructions
    results['clarified'] = run_and_evaluate(
        clarify(base_prompt), test_input, expected_output
    )

    for name, passed in results.items():
        print(f'{name}: {"PASS" if passed else "FAIL"}')

Eliminasi vs Konfirmasi

RCA mengikuti dua mode:

  • Eliminasi: singkirkan penyebab yang TIDAK bertanggung jawab (uji setiap hipotesis dan lihat hipotesis mana yang TIDAK mengubah keluaran)
  • Konfirmasi: identifikasi penyebab yang, setelah diperbaiki, secara konsisten menyelesaikan kegagalan pada beberapa masukan pengujian

Konfirmasi memerlukan setidaknya 3 masukan pengujian. Perbaikan yang berhasil pada satu masukan tetapi tidak pada masukan lainnya belum menyelesaikan akar masalah — mungkin hanya menyelesaikan gejalanya.

def confirm_root_cause(fix_fn, test_cases, threshold=0.9):
    '''fix_fn: a function that takes a prompt and returns a fixed prompt'''
    passed = 0
    for case in test_cases:
        fixed_prompt = fix_fn(case['prompt'])
        result = run_and_evaluate(fixed_prompt, case['input'], case['expected'])
        if result:
            passed += 1

    pass_rate = passed / len(test_cases)
    print(f'Fix pass rate: {pass_rate:.0%}')
    if pass_rate >= threshold:
        print('Root cause CONFIRMED — fix is reliable.')
    else:
        print('Root cause NOT confirmed — failure has multiple causes.')

Mendokumentasikan Akar Masalah

Setelah mengidentifikasi akar masalah, dokumentasikan masalah tersebut dalam catatan perubahan perintah. Sertakan:

  • Jenis kegagalan yang diamati
  • Kategori akar masalah
  • Hipotesis yang diuji
  • Bukti (pengujian mana yang berhasil setelah perbaikan)
  • Perubahan spesifik yang dibuat pada perintah

Hal ini mencegah teknisi di masa mendatang menyelidiki kembali kegagalan yang sama dan memungkinkan pengenalan pola di berbagai perintah.

rca_record = {
    'prompt_id': 'summarize_v3',
    'failure_type': 'wrong_format',
    'root_cause': 'format_conflict',
    'hypothesis': 'System prompt said plain text, user message asked for markdown',
    'evidence': 'Removing markdown instruction from user message resolved failure on 8/8 test cases',
    'fix_applied': 'Moved all format instructions to system prompt; removed format instructions from user template',
    'fix_date': '2024-11-15'
}

Kesalahan Umum: Memperbaiki Penyebab yang Salah

Kesalahan RCA yang paling umum adalah memperbaiki gejala, bukan penyebabnya. Contoh:

  • Gejala: model mengembalikan JSON dengan awalan prosa tambahan
  • Perbaikan yang salah: tambahkan pemrosesan pasca untuk menghapus prosa dari keluaran
  • Akar masalah sebenarnya: tidak ada instruksi format dalam perintah + model menggunakan gaya percakapan sebagai bawaan
  • Perbaikan yang benar: tambahkan instruksi eksplisit 'Kembalikan hanya JSON yang valid. Jangan sertakan teks lain.'

Peretasan pemrosesan pasca menumpuk utang teknis. Perbaikan akar masalah lebih tahan lama.

RCA untuk Kegagalan yang Terjadi Sesekali

Beberapa kegagalan terjadi sesekali — perintah berhasil 80% dari waktu, tetapi gagal 20%. Kegagalan ini lebih sulit didiagnosis karena menjalankan perintah sekali dapat menghasilkan keluaran yang benar.

Pendekatan: jalankan perintah 10–20 kali pada masukan yang sama. Jika tingkat kegagalannya tidak nol, perintah tersebut memiliki akar masalah probabilistik — biasanya ambiguitas instruksi atau suhu yang tinggi. Perbaikan: buat instruksinya lebih spesifik, atau kurangi suhu.

def measure_failure_rate(prompt, test_input, expected, runs=20):
    failures = 0
    for _ in range(runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[{'role': 'user', 'content': prompt + '\n' + test_input}],
            temperature=0.7
        )
        if not evaluate(resp.choices[0].message.content, expected):
            failures += 1
    print(f'Failure rate: {failures}/{runs} = {failures/runs:.0%}')

Pemeriksaan Pengetahuan

Sebuah perintah meminta respons JSON, tetapi sesekali mengembalikan JSON yang didahului awalan percakapan seperti 'Tentu! Berikut JSON-nya:'. Setelah ditambahkan 'Kembalikan hanya JSON yang valid. Jangan sertakan teks lain.', kegagalan tersebut berhenti terjadi. Apa akar masalahnya?

Rangkuman: Analisis Akar Masalah

Empat kategori akar masalah untuk kegagalan perintah:

  • Masalah konteks: model kekurangan informasi yang diperlukan — perbaikan: tambahkan konteks melalui RAG atau penyisipan langsung
  • Ambiguitas instruksi: instruksi yang tidak jelas dengan beberapa tafsir — perbaikan: tambahkan ketepatan
  • Konflik format: instruksi pemformatan yang saling bertentangan — perbaikan: konsolidasikan dalam perintah sistem
  • Batas kemampuan model: tugas melampaui kemampuan model — perbaikan: tingkatkan model atau uraikan tugas

Gunakan isolasi sistematis untuk menguji setiap hipotesis. Konfirmasikan perbaikan pada beberapa kasus pengujian. Dokumentasikan temuan. Pelajaran berikutnya: penelusuran kesalahan dengan pencarian biner sistematis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Analisis Akar Masalah untuk Perintah” gratis?

Ya — teks lengkap “Analisis Akar Masalah untuk Perintah” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Analisis Akar Masalah untuk Perintah”?

Tentukan apakah kegagalan terjadi pada konteks, instruksi, format, atau kemampuan model. Kamu berlatih AI Prompt Engineering 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 Prompt Engineering?

Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering 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 2 dari 4.

Berapa lama pelajaran “Analisis Akar Masalah untuk Perintah” 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 Prompt Engineering ini?

Ya. Setiap pelajaran AI Prompt Engineering 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. Mendiagnosis Keluaran Tak Terduga
  2. Analisis Akar Masalah untuk Perintah
  3. Pendekatan Debugging Sistematis
  4. Strategi Pencatatan dan Dokumentasi
← Kembali ke AI Prompt Engineering