0Pricing
AI Agents · Ders

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 ipdb

pdb 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 gir
  • c — sonraki kesme noktasına kadar devam et
  • p expr — ifadenin değerini yazdır
  • pp expr — okunaklı biçimde yazdır (sözlükler ve listeler için)
  • l — geçerli satırın çevresindeki kaynak kodunu listele
  • q — 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:
        raise

Ayrı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-error

Hata 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+) veya import 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 --debug ve --pdb-on-error CLI 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

  1. Yaygın Aracı Döngüsü Hataları
  2. Aracı Adımları İçin İz Günlüğü Kaydı
  3. Sonsuz Döngüleri Tespit Etme ve Kırma
  4. Adım Adım Hata Ayıklama Teknikleri
← AI Agents Sayfasına Dön