0Pricing
AI Agents · Ders

Araç Hatalarını Algılama ve Kurtarma

Bir araç 500 hatası verdiğinde çökmesi yerine farklı bir yaklaşım deneyebilmesi için hatayı modele döndürün.

Araç Hatalarını Algılama ve Kurtarma, 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.

Araçlar Hata Verir, Buna Hazırlıklı Olun

Gerçek dünyadaki her araç bazen başarısız olur:

  • Ağ zaman aşımları
  • Hız sınırları
  • Modelden gelen hatalı argümanlar
  • Harici hizmet kesintileri
  • Geçersiz kimlik doğrulama

Üretim aracıları hatalardan zarif biçimde kurtulmalıdır.

Her Zaman Döndürün, Asla İstisna Fırlatmayın

Aracı döngüsünün içinde tüm araç hatalarını yakalayıp içerik olarak döndürün. Bir istisnanın döngüyü sonlandırmasına asla izin vermeyin:

def safe_dispatch(tool_call):
    try:
        args = json.loads(tool_call.function.arguments)
        return TOOLS[tool_call.function.name](**args)
    except json.JSONDecodeError:
        return {'error': 'Arguments are not valid JSON.'}
    except KeyError:
        return {'error': f'Unknown tool: {tool_call.function.name}'}
    except Exception as e:
        return {'error': f'{type(e).__name__}: {e}'}

Yapılandırılmış Hata Biçimi

Modelin hataları tanıyabilmesi için tutarlı bir yapı kullanın:

error = {'ok': False, 'error_type': 'TimeoutError', 'error_message': 'Tavily timed out after 10s', 'retryable': True}
print(error)

Yeniden Denenebilir ve Kalıcı Hataları Ayırt Etme

Bazı hatalar yeniden denemeyi gerektirir (zaman aşımı); diğerleri gerektirmez (404). Modele şunu bildirin:

if isinstance(e, requests.Timeout):
    return {'ok': False, 'retryable': True, 'error': str(e)}
if isinstance(e, ValueError):
    return {'ok': False, 'retryable': False, 'error': str(e)}

Geçici Hataları Otomatik Olarak Yeniden Deneme

Ağ çağrılarında üstel beklemeyle yeniden deneyin:

from tenacity import retry, wait_exponential, stop_after_attempt, retry_if_exception_type

@retry(
    wait=wait_exponential(multiplier=1, max=10),
    stop=stop_after_attempt(3),
    retry=retry_if_exception_type((requests.Timeout, requests.ConnectionError))
)
def web_search(query):
    return requests.get('https://api.tavily.com/search', ...).json()

Argüman Doğrulama

Aracı çağırmadan önce argümanları bir Pydantic modeliyle doğrulayın:

from pydantic import BaseModel, ValidationError

class SearchArgs(BaseModel):
    query: str
    k: int = 5

try:
    args = SearchArgs.model_validate_json(tool_call.function.arguments)
except ValidationError as e:
    return {'error': f'Bad arguments: {e}'}

Hatayı Modele Gösterme

Hatayı bir araç sonucu olarak ekleyin ve modeli yeniden çağırın. Model çoğu zaman kendini düzeltir:

messages.append({
    'role': 'tool',
    'tool_call_id': tc.id,
    'content': json.dumps({'error': 'Argument k must be an integer'})
})
# Next model call: 'Sorry, let me retry with k=5...'

Sonsuz Hata Döngülerinden Kaçınma

Bazı modeller kendilerine bir hata gösterildiğinde aynı bozuk çağrıyı yeniden dener. Döngüyü sınırlandırın ve tekrarları tespit edin:

recent_calls = []
for tc in msg.tool_calls:
    key = (tc.function.name, tc.function.arguments)
    if recent_calls.count(key) >= 3:
        return 'Agent stuck in retry loop, aborting.'
    recent_calls.append(key)

Araca Özel Kurtarma

Sık sık geçici hata veren araçlar için yeniden deneme mantığını döngünün içinde değil, aracın İÇİNDE oluşturun:

def search_with_fallback(query):
    try:
        return tavily_search(query)
    except Exception:
        return bing_search(query)   # secondary provider

Her Çağrıda Zaman Aşımı

Her harici çağrının bir zaman aşımı olmalıdır. Aksi hâlde yavaşlayan tek bir hizmet tüm ajanınızı dondurur:

import requests
response = requests.get(url, timeout=10)  # 10s

# For LLM calls:
from openai import OpenAI
client = OpenAI(timeout=30.0)

Devre Kesiciler

Bir araç art arda hata verdiğinde devreyi "açın" ve bir süre bu aracı atlayın:

import time

class CircuitOpen(Exception):
    pass

def circuit(failure_threshold=5, recovery_timeout=60):
    def decorator(func):
        state = {'failures': 0, 'open_until': 0}
        def wrapper(*args, **kwargs):
            if time.time() < state['open_until']:
                raise CircuitOpen('circuit is open')
            try:
                result = func(*args, **kwargs)
                state['failures'] = 0
                return result
            except Exception:
                state['failures'] += 1
                if state['failures'] >= failure_threshold:
                    state['open_until'] = time.time() + recovery_timeout
                raise
        return wrapper
    return decorator

@circuit(failure_threshold=3, recovery_timeout=1)
def fragile_tool(x):
    if x < 0:
        raise ValueError('bad input')
    return x * 2

for x in [1, -1, -1, -1, -1]:
    try:
        print('ok', fragile_tool(x))
    except CircuitOpen as e:
        print('blocked:', e)
    except ValueError as e:
        print('failed:', e)

Hataları Bağlamla Günlüğe Kaydetme

Sonradan hata ayıklayabilmek için yeterli bilgiyi günlüğe kaydedin: araç adı, bağımsız değişkenler, hata türü, yığın izi, istek kimliği, kullanıcı kimliği, iz kimliği. Bunları gözlemlenebilirlik aracınıza gönderin.

Zarif Bozulma

Kritik bir araç kullanılamadığında, ajanın başarılı olmuş gibi davranması yerine kullanıcıya dürüstçe bilgi verin:

if all_search_tools_failed:
    return 'I was unable to search the web right now. Please try again in a few minutes.'

Araç Hataları Deseni

Ajan döngüsünün içindeki araç istisnalarını işlemenin en güvenli yolu nedir?

Özet

Araçlar hata verir. Hataları yakalayın, sınıflandırın, içerik olarak yapılandırın ve ajanın toparlanmasına izin verin. Üretim güvenilirliği için zaman aşımları, yeniden denemeler ve devre kesiciler ekleyin.

Sıkça Sorulan Sorular

“Araç Hatalarını Algılama ve Kurtarma” dersi ücretsiz mi?

Evet — “Araç Hatalarını Algılama ve Kurtarma” 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.

“Araç Hatalarını Algılama ve Kurtarma” dersinde ne öğreneceğim?

Bir araç 500 hatası verdiğinde çökmesi yerine farklı bir yaklaşım deneyebilmesi için hatayı modele döndürün. 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.

“Araç Hatalarını Algılama ve Kurtarma” 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. ReAct: Akıl Yürütme ve Eylem Kalıbı
  2. ReAct'i Sıfırdan Uygulama
  3. Yaygın Araç Kümeleri (Web, Hesap Makinesi, RAG)
  4. Araç Hatalarını Algılama ve Kurtarma
← AI Agents Sayfasına Dön