Teknik Penyahpepijatan Langkah demi Langkah
Menambahkan titik henti, cetakan perantaraan dan menggunakan penyahpepijat dalam kod ejen.
Teknik Penyahpepijatan Langkah demi Langkah ialah pelajaran Ejen AI percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ejen AI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.
Menyahpepijat Ejen Berbeza daripada Menyahpepijat Fungsi
Sesuatu fungsi mempunyai masukan dan hasil yang jelas. Ejen mempunyai gelung dengan panggilan LLM, pelaksanaan alat dan perubahan sejarah — semuanya boleh tersilap dengan cara yang sukar dikesan.
Penyahpepijatan langkah demi langkah membolehkan anda menjeda pada setiap langkah, memeriksa keadaan ejen dan memahami dengan tepat perkara yang berlaku.
Penyahpepijat Terbina dalam Python: pdb
Penyahpepijat Python pdb membolehkan anda menjeda pelaksanaan, memeriksa pemboleh ubah dan menelusuri kod baris demi baris. Masukkan import pdb; pdb.set_trace() pada mana-mana bahagian dalam gelung ejen untuk memasuki sesi penyahpepijatan 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 terbina dalam breakpoint() — lebih kemas berbanding import pdb; pdb.set_trace(). Fungsi ini juga mematuhi pemboleh ubah persekitaran PYTHONBREAKPOINT, yang membolehkan anda menukar kepada penyahpepijat 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 ipdbRujukan Perintah pdb
Perintah pdb yang paling penting untuk menyahpepijat gelung ejen:
n— baris seterusnya (melangkau)s— masuk ke dalam panggilan fungsic— teruskan hingga titik henti seterusnyap expr— cetak nilai ungkapanpp expr— cetak dalam format kemas (untuk kamus/senarai)l— senaraikan kod sumber di sekitar baris semasaq— keluar daripada penyahpepijat
# 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
Hanya berhenti apabila syarat tertentu benar — contohnya, hanya apabila alat tertentu dipilih atau apabila bilangan langkah tinggi. Ini mengelakkan penghentian pada setiap lelaran gelung yang 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})Penyahpepijat VS Code untuk Kod Ejen
Penyahpepijat Python VS Code menyediakan pengalaman melangkah secara visual dengan panel pemeriksaan pemboleh ubah, tindanan panggilan dan ungkapan pantauan. Konfigurasikan launch.json untuk menjalankan ejen dalam mod nyahpepijat.
# .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 Bendera --debug pada CLI Anda
Tambahkan bendera --debug pada CLI ejen Anda. Apabila ditetapkan, bendera ini mengaktifkan pengelogan terperinci, mencetak setiap langkah dan secara pilihan memasuki pdb apabila berlaku ralat. Dengan cara ini, Anda boleh menyahpepijat tanpa mengubah kod 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:
raiseMelangkah Menggunakan Mod Terperinci
Mod terperinci mencetak maklumat terperinci tentang setiap langkah ke output standard, supaya Anda boleh menjejak pelaksanaan ejen tanpa penyahpepijat. Tambahkan bendera verbose=True pada gelung ejen 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}Penyahpepijatan Selepas Kegagalan dengan pdb.post_mortem()
Apabila ejen terhenti akibat pengecualian, pdb.post_mortem() membuka penyahpepijat tepat pada titik kegagalan, dengan tindanan panggilan dikekalkan. Ciri ini amat berguna untuk memahami punca kegagalan tanpa perlu menghasilkan semula keadaan tersebut.
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-errorMemeriksa Sejarah Mesej dalam Penyahpepijat
Perkara paling berguna untuk diperiksa semasa penyahpepijatan ejen ialah sejarah perbualan. Gunakan perintah pp pdb untuk mencetaknya dalam format kemas, atau lakukan lelaran melaluinya bagi memahami perkara yang telah dilihat oleh ejen setakat 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 Langkah demi Langkah Tanpa Panggilan LLM
Untuk pengulangan pantas, bina mod simulasi yang membolehkan Anda menentukan secara manual tindakan yang diambil oleh ejen pada setiap langkah. Dengan cara ini, Anda boleh menguji pelaksanaan alat dan pengurusan sejarah tanpa membuat sebarang panggilan API LLM.
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.'}
# ])Semakan Pengetahuan: Penyahpepijatan Langkah demi Langkah
Uji pemahaman Anda tentang teknik penyahpepijatan untuk kod ejen.
Imbas Kembali: Teknik Penyahpepijatan Langkah demi Langkah
Kini Anda mempunyai set alat penyahpepijatan lengkap untuk gelung ejen:
- Gunakan
breakpoint()(Python 3.7+) atauimport pdb; pdb.set_trace()untuk penyahpepijatan interaktif - Gunakan titik henti bersyarat untuk berhenti hanya apabila sesuatu yang mencurigakan berlaku
- Konfigurasikan VS Code launch.json untuk menyahpepijat menggunakan antara muka grafik
- Tambahkan bendera CLI
--debugdan--pdb-on-erroruntuk penyahpepijatan apabila diperlukan - Gunakan
pdb.post_mortem()untuk memeriksa kegagalan selepas ia berlaku - Bina mod simulasi untuk menguji logik alat tanpa panggilan LLM
- Gunakan mod terperinci untuk menjejak pelaksanaan tanpa menjedakannya
Pelajari Ejen AI dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 60
- Pelajaran
- 239
Soalan Lazim
Adakah pelajaran “Teknik Penyahpepijatan Langkah demi Langkah” percuma?
Ya — teks penuh “Teknik Penyahpepijatan Langkah demi Langkah” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Ejen AI, tingkat taraf kepada CoddyKit PRO. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Teknik Penyahpepijatan Langkah demi Langkah”?
Menambahkan titik henti, cetakan perantaraan dan menggunakan penyahpepijat dalam kod ejen. Anda berlatih Ejen AI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Ejen AI?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Ejen AI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Teknik Penyahpepijatan Langkah demi Langkah” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ejen AI ini?
Ya. Setiap pelajaran Ejen AI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Kegagalan Gelung Ejen yang Lazim
- Pengelogan Jejak untuk Langkah Ejen
- Mengesan dan Memutuskan Gelung Tanpa Penghujung
- Teknik Penyahpepijatan Langkah demi Langkah