AI Agents · Pelajaran

Teknik Debugging Langkah demi Langkah

Tambahkan breakpoint, cetakan perantara, dan gunakan debugger dalam kode agen.

Pelajaran 4 dari 413 langkah

Teknik Debugging Langkah demi Langkah adalah pelajaran AI Agents 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 Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Menelusuri Kesalahan Agen Berbeda dari Menelusuri Kesalahan Fungsi

Sebuah fungsi memiliki masukan dan keluaran yang jelas. Agen memiliki perulangan dengan pemanggilan LLM, eksekusi alat, dan perubahan riwayat—semuanya dapat mengalami kesalahan dengan cara yang sulit terlihat.

Penelusuran langkah demi langkah memungkinkan Anda menjeda pada setiap langkah, memeriksa keadaan agen, dan memahami dengan tepat apa yang salah.

Penelusur Kesalahan Bawaan Python: pdb

Penelusur kesalahan Python pdb memungkinkan Anda menjeda eksekusi, memeriksa variabel, dan menelusuri kode baris demi baris. Sisipkan import pdb; pdb.set_trace() di titik mana pun dalam perulangan agen untuk masuk ke sesi penelusuran kesalahan interaktif.

import pdb

def run_agent_loop(query: str):
    history = []
    for step in range(1, 21):
        action = decide_action(query, history)

        # Drop into debugger at step 3 to inspect state
        if step == 3:
            import pdb; pdb.set_trace()
            # At this point you can:
            # (Pdb) print(action)       -- inspect current action
            # (Pdb) print(history)      -- inspect full history
            # (Pdb) n                   -- next line
            # (Pdb) c                   -- continue execution
            # (Pdb) q                   -- quit

        result = execute_tool(action['tool'], action['args'])
        history.append({'tool': action['tool'], 'result': result})

Python 3.7+: Fungsi breakpoint()

Python 3.7+ menyertakan fungsi bawaan breakpoint()—lebih rapi daripada import pdb; pdb.set_trace(). Fungsi ini juga mematuhi variabel lingkungan PYTHONBREAKPOINT, yang memungkinkan Anda mengganti debugger dengan debugger lain.

def run_agent_loop(query: str):
    history = []
    for step in range(1, 21):
        action = decide_action(query, history)

        breakpoint()  # cleaner than pdb.set_trace()

        result = execute_tool(action['tool'], action['args'])
        history.append({'tool': action['tool'], 'result': result})

# Disable all breakpoints without changing code:
# PYTHONBREAKPOINT=0 python agent.py

# Use ipdb (better UI) instead:
# PYTHONBREAKPOINT=ipdb.set_trace python agent.py
# pip install ipdb

Referensi Perintah pdb

Perintah pdb yang paling penting untuk mengawakutu perulangan agen:

  • n — baris berikutnya (lewati langkah)
  • s — masuk ke pemanggilan fungsi
  • c — lanjutkan hingga titik henti berikutnya
  • p expr — tampilkan nilai ekspresi
  • pp expr — tampilkan dengan format rapi (untuk kamus/daftar)
  • l — tampilkan kode sumber di sekitar baris saat ini
  • q — keluar dari alat pengawakutuan
# Typical pdb debugging session for an agent loop:
# (Pdb) p step           -- print current step number: 3
# (Pdb) pp action        -- pretty-print the action dict
# {'type': 'tool', 'tool': 'search_web', 'args': {'query': 'Python docs'}}
# (Pdb) pp history       -- see full conversation so far
# (Pdb) p len(history)   -- count messages: 6
# (Pdb) n                -- execute next line
# (Pdb) p result         -- see tool result
# (Pdb) c                -- continue to next breakpoint
print('pdb lets you inspect agent state at any point in the loop')

Titik Henti Bersyarat

Hentikan hanya ketika kondisi tertentu terpenuhi—misalnya, hanya ketika alat tertentu dipilih atau ketika jumlah langkah sudah tinggi. Dengan demikian, Anda tidak perlu berhenti pada setiap iterasi perulangan panjang.

def run_agent_loop(query: str):
    history = []
    for step in range(1, 21):
        action = decide_action(query, history)

        # Break only if the agent picks the wrong tool
        if action.get('tool') == 'calculate' and 'weather' in query.lower():
            breakpoint()  # This is suspicious — weather shouldn't use calculator

        # Break only if we're near the step limit
        if step >= 18:
            breakpoint()  # Why hasn't the agent concluded yet?

        result = execute_tool(action['tool'], action['args'])
        history.append({'tool': action['tool'], 'result': result})

Alat Pengawakutuan VS Code untuk Kode Agen

Alat pengawakutuan Python dari VS Code menyediakan pengalaman penelusuran langkah demi langkah secara visual, lengkap dengan panel pemeriksaan variabel, tumpukan pemanggilan, dan ekspresi pemantauan. Konfigurasikan launch.json untuk menjalankan agen dalam mode pengawakutuan.

# .vscode/launch.json
# {
#   'version': '0.2.0',
#   'configurations': [
#     {
#       'name': 'Debug Agent',
#       'type': 'python',
#       'request': 'launch',
#       'program': 'agent_cli.py',
#       'args': ['--query', 'What is the weather in Paris?'],
#       'env': {
#         'OPENAI_API_KEY': 'your-key',
#         'LOG_LEVEL': 'DEBUG'
#       },
#       'console': 'integratedTerminal'
#     }
#   ]
# }

# Set breakpoints by clicking the left margin in VS Code
# Press F5 to start debugging, F10 to step over, F11 to step into
print('VS Code debugger provides visual debugging with no code changes needed')

Menambahkan Opsi --debug ke CLI Anda

Tambahkan opsi --debug ke CLI agen Anda. Saat diaktifkan, opsi ini mengaktifkan pencatatan terperinci, menampilkan setiap langkah, dan secara opsional membuka pdb saat terjadi kesalahan. Dengan demikian, Anda dapat melakukan pengawakutuan tanpa mengubah kode sumber.

import argparse
import logging

parser = argparse.ArgumentParser()
parser.add_argument('--query', required=True)
parser.add_argument('--debug', action='store_true', help='Enable step-by-step debugging output')
parser.add_argument('--pdb-on-error', action='store_true', help='Drop into pdb on any exception')
args = parser.parse_args()

if args.debug:
    logging.basicConfig(level=logging.DEBUG)
    print('[DEBUG MODE] Step-by-step output enabled')

try:
    result = run_agent(args.query, verbose=args.debug)
    print(result['answer'])
except Exception as e:
    if args.pdb_on_error:
        import pdb; pdb.post_mortem()  # debug the crash
    else:
        raise

Menelusuri Langkah demi Langkah dengan Mode Terperinci

Mode terperinci menampilkan informasi lengkap tentang setiap langkah ke keluaran standar, sehingga Anda dapat melacak eksekusi agen tanpa alat pengawakutuan. Tambahkan opsi verbose=True ke perulangan agen Anda.

import json

def run_agent(query: str, verbose: bool = False) -> dict:
    history = []

    for step in range(1, 21):
        action = decide_action(query, history)

        if verbose:
            print(f'\n--- Step {step} ---')
            print(f'Action type: {action["type"]}')
            if action['type'] == 'tool':
                print(f'Tool: {action["tool"]}')
                print(f'Args: {json.dumps(action["args"], indent=2)}')

        if action['type'] == 'final_answer':
            if verbose:
                print(f'\nFinal answer: {action["answer"]}')
            return {'status': 'ok', 'answer': action['answer']}

        result = execute_tool(action['tool'], action['args'])
        if verbose:
            print(f'Result: {str(result)[:200]}')
        history.append({'tool': action['tool'], 'result': result})

    return {'status': 'max_steps', 'answer': None}

Pengawakutuan Pasca-Kegagalan dengan pdb.post_mortem()

Saat agen berhenti karena pengecualian, pdb.post_mortem() membuka alat pengawakutuan tepat di titik kegagalan, dengan tumpukan pemanggilan tetap tersedia. Fitur ini sangat berguna untuk memahami penyebab kegagalan tanpa harus mereproduksinya.

import pdb
import sys
import traceback

def run_agent_with_postmortem(query: str, debug: bool = False) -> dict:
    try:
        return run_agent(query)
    except Exception as e:
        if debug:
            print(f'\nAgent crashed: {e}')
            traceback.print_exc()
            print('\nDropping into post-mortem debugger...')
            pdb.post_mortem()  # opens debugger at the crash site
            return {'status': 'crashed', 'error': str(e)}
        else:
            raise

# Usage:
# python agent.py --query 'test' --pdb-on-error

Memeriksa Riwayat Pesan dalam Alat Pengawakutuan

Hal yang paling berguna untuk diperiksa selama pengawakutuan agen adalah riwayat percakapan. Gunakan perintah pp milik pdb untuk menampilkannya dengan format rapi, atau telusuri isinya untuk memahami hal-hal yang telah dilihat agen sejauh ini.

# Inside a pdb session, common inspection commands:

# Print the full history:
# (Pdb) pp history

# Print only user and assistant messages:
# (Pdb) pp [m for m in history if m['role'] in ('user', 'assistant')]

# Count messages:
# (Pdb) p len(history)

# Find tool calls in history:
# (Pdb) pp [m for m in history if m.get('role') == 'tool']

# Print the last message:
# (Pdb) pp history[-1]

# Print total token estimate (rough):
# (Pdb) p sum(len(str(m)) for m in history)
print('History inspection is the key to understanding agent state')

Simulasi Penelusuran Langkah tanpa Panggilan LLM

Untuk iterasi cepat, buat mode simulasi yang memungkinkan Anda menentukan secara manual tindakan agen pada setiap langkah. Dengan demikian, Anda dapat menguji eksekusi alat dan pengelolaan riwayat tanpa melakukan panggilan API LLM apa pun.

def run_agent_simulation(query: str, scripted_actions: list) -> dict:
    'Simulate agent steps without LLM calls, using pre-defined actions'
    history = []

    for step, action in enumerate(scripted_actions, 1):
        print(f'Step {step}: {action}')

        if action['type'] == 'final_answer':
            return {'status': 'ok', 'answer': action['answer'], 'steps': step}

        result = execute_tool(action['tool'], action['args'])
        print(f'  Result: {str(result)[:100]}')
        history.append({'tool': action['tool'], 'result': result})

    return {'status': 'script_exhausted', 'history': history}

# Test tool execution logic without any LLM:
# result = run_agent_simulation('test', [
#     {'type': 'tool', 'tool': 'search_web', 'args': {'query': 'Python'}},
#     {'type': 'final_answer', 'answer': 'Python is a programming language.'}
# ])

Uji Pemahaman: Pengawakutuan Langkah demi Langkah

Uji pemahaman Anda tentang teknik pengawakutuan untuk kode agen.

Ringkasan: Teknik Pengawakutuan Langkah demi Langkah

Sekarang Anda memiliki perangkat lengkap untuk mengawakutu perulangan agen:

  • Gunakan breakpoint() (Python 3.7+) atau import pdb; pdb.set_trace() untuk pengawakutuan interaktif
  • Gunakan titik henti bersyarat agar program hanya berhenti ketika sesuatu yang mencurigakan terjadi
  • Konfigurasikan VS Code launch.json untuk melakukan pengawakutuan dengan antarmuka grafis
  • Tambahkan opsi CLI --debug dan --pdb-on-error untuk pengawakutuan sesuai kebutuhan
  • Gunakan pdb.post_mortem() untuk memeriksa kegagalan setelah terjadi
  • Buat mode simulasi untuk menguji logika alat tanpa panggilan LLM
  • Gunakan mode terperinci untuk melacak eksekusi tanpa menghentikannya
Gratis untuk memulai

Belajar AI Agents 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
60
Pelajaran
239

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Teknik Debugging Langkah demi Langkah” gratis?

Ya — teks lengkap “Teknik Debugging Langkah demi Langkah” 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 “Teknik Debugging Langkah demi Langkah”?

Tambahkan breakpoint, cetakan perantara, dan gunakan debugger dalam kode agen. 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 4 dari 4.

Berapa lama pelajaran “Teknik Debugging Langkah demi Langkah” 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. Kegagalan Umum dalam Putaran Agen
  2. Pencatatan Jejak untuk Langkah Agen
  3. Mendeteksi dan Memutus Putaran Tak Berujung
  4. Teknik Debugging Langkah demi Langkah
← Kembali ke AI Agents