Adım Adım Hata Ayıklama Teknikleri
Aracı koduna kesme noktaları ve ara çıktı ekleme, hata ayıklayıcı kullanma.
Adım Adım Hata Ayıklama Teknikleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Aracılarda Hata Ayıklama, İşlevlerdekinden Farklıdır
Bir işlevin açık bir girdisi ve çıktısı vardır. Bir aracının ise LLM çağrıları, araç yürütmeleri ve geçmiş değişiklikleri içeren bir döngüsü vardır — bunların tümü incelikli şekillerde yanlış gidebilir.
Adım adım hata ayıklama, her adımda duraklamanıza, aracının durumunu incelemenize ve tam olarak neyin yanlış gittiğini anlamanıza olanak tanır.
Python'un Yerleşik Hata Ayıklayıcısı: pdb
Python hata ayıklayıcısı pdb, yürütmeyi duraklatmanıza, değişkenleri incelemenize ve kodu satır satır ilerletmenize olanak tanır. Aracı döngüsünün herhangi bir noktasına import pdb; pdb.set_trace() ekleyerek etkileşimli bir hata ayıklama oturumuna geçebilirsiniz.
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+: breakpoint() İşlevi
Python 3.7+ yerleşik breakpoint() işlevini içerir — import pdb; pdb.set_trace() kullanımından daha temizdir. Ayrıca farklı bir hata ayıklayıcıyla değiştirme olanağı sağlayan PYTHONBREAKPOINT ortam değişkenini de dikkate alır.
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 ipdbpdb Komut Referansı
Ajan döngülerinde hata ayıklama için en önemli pdb komutları:
n— sonraki satır (üzerinden geç)s— işlev çağrısına girc— sonraki kesme noktasına kadar devam etp expr— ifadenin değerini yazdırpp expr— okunaklı biçimde yazdır (sözlükler ve listeler için)l— geçerli satırın çevresindeki kaynak kodunu listeleq— hata ayıklayıcıdan çık
# 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')Koşullu Kesme Noktaları
Yalnızca belirli bir koşul doğru olduğunda durun; örneğin yalnızca belirli bir araç seçildiğinde veya adım sayısı yüksek olduğunda. Bu, uzun bir döngünün her yinelemesinde durmanızı önler.
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})Ajan Kodu için VS Code Hata Ayıklayıcısı
VS Code Python hata ayıklayıcısı; değişken inceleme panelleri, çağrı yığınları ve izleme ifadeleriyle görsel bir adım adım ilerleme deneyimi sağlar. Ajanınızı hata ayıklama modunda çalıştırmak için bir launch.json yapılandırın.
# .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')CLI'nize --debug Bayrağı Ekleme
Ajan CLI'nize bir --debug bayrağı ekleyin. Etkinleştirildiğinde ayrıntılı günlüklemeyi açar, her adımı yazdırır ve hatalarda isteğe bağlı olarak pdb'ye geçer. Böylece kaynak kodunu değiştirmeden hata ayıklayabilirsiniz.
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:
raiseAyrıntılı Mod ile Adım Adım İlerleme
Ayrıntılı mod, her adımla ilgili ayrıntılı bilgileri standart çıktıya yazdırır ve hata ayıklayıcı kullanmadan ajanın yürütülmesini izlemenizi sağlar. Ajan döngünüze bir verbose=True bayrağı ekleyin.
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}pdb.post_mortem() ile Ölüm Sonrası Hata Ayıklama
Bir ajan bir istisnayla çöktüğünde pdb.post_mortem(), çağrı yığını korunmuş şekilde hata ayıklayıcıyı hatanın tam olarak gerçekleştiği noktada açar. Bu, çökmeleri yeniden oluşturmak zorunda kalmadan anlamak için son derece değerlidir.
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-errorHata Ayıklayıcıda Mesaj Geçmişini İnceleme
Ajanlarda hata ayıklarken incelenecek en yararlı şey konuşma geçmişidir. Geçmişi okunaklı biçimde yazdırmak için pdb'nin pp komutunu kullanın veya ajanın şimdiye kadar neler gördüğünü anlamak için geçmiş üzerinde yineleme yapın.
# 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')LLM Çağrıları Olmadan Adım Adım İlerleme Simülasyonu
Hızlı yineleme için ajanın her adımda gerçekleştireceği eylemi el ile belirttiğiniz bir simülasyon modu oluşturun. Böylece herhangi bir LLM API çağrısı yapmadan araç yürütmenizi ve geçmiş yönetiminizi sınayabilirsiniz.
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.'}
# ])Bilgi Kontrolü: Adım Adım Hata Ayıklama
Ajan kodu için hata ayıklama tekniklerini anlayıp anlamadığınızı sınayın.
Özet: Adım Adım Hata Ayıklama Teknikleri
Ajan döngüleri için artık eksiksiz bir hata ayıklama araç setiniz var:
- Etkileşimli hata ayıklama için
breakpoint()(Python 3.7+) veyaimport pdb; pdb.set_trace()kullanın - Yalnızca şüpheli bir durum gerçekleştiğinde durmak için koşullu kesme noktaları kullanın
- Grafik arayüzle hata ayıklamak için VS Code launch.json dosyasını yapılandırın
- İhtiyaç olduğunda hata ayıklamak için
--debugve--pdb-on-errorCLI bayraklarını ekleyin - Çökmeler gerçekleştikten sonra incelemek için
pdb.post_mortem()kullanın - LLM çağrıları olmadan araç mantığını sınamak için bir simülasyon modu oluşturun
- Duraklatmadan yürütmeyi izlemek için ayrıntılı modu kullanın
Sıkça Sorulan Sorular
“Adım Adım Hata Ayıklama Teknikleri” dersi ücretsiz mi?
Evet — “Adım Adım Hata Ayıklama Teknikleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Adım Adım Hata Ayıklama Teknikleri” dersinde ne öğreneceğim?
Aracı koduna kesme noktaları ve ara çıktı ekleme, hata ayıklayıcı kullanma. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Adım Adım Hata Ayıklama Teknikleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yaygın Aracı Döngüsü Hataları
- Aracı Adımları İçin İz Günlüğü Kaydı
- Sonsuz Döngüleri Tespit Etme ve Kırma
- Adım Adım Hata Ayıklama Teknikleri