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 providerHer Ç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
- ReAct: Akıl Yürütme ve Eylem Kalıbı
- ReAct'i Sıfırdan Uygulama
- Yaygın Araç Kümeleri (Web, Hesap Makinesi, RAG)
- Araç Hatalarını Algılama ve Kurtarma