Ajan otomasyonunda tekrar deneme retry ve geri dönüş rollback mantığı

Ajan otomasyonunda tekrar deneme retry ve geri dönüş rollback mantığı

Bir yapay zeka ajanı düşünün: Veri çekiyor, API’lere istek atıyor, kararlar alıyor. Peki ya bir adım başarısız olursa? İşte tam bu noktada ajan otomasyonunda tekrar deneme (retry) ve geri dönüş (rollback) mantığı devreye giriyor. Bu iki mekanizma, otonom sistemlerin “hata toleransı” kazanmasını sağlayan temel yapı taşlarıdır. Doğru kurgulanmadığında ajanlar sonsuz döngülere girer, kaynakları tüketir veya yarım kalmış işlemlerle veri tutarsızlığı yaratır.

Kısa Tanım: Retry, başarısız bir işlemi belirli kurallar dahilinde yeniden deneme stratejisidir. Rollback ise bir işlem zincirinde hata oluştuğunda sistemi önceki kararlı durumuna geri döndürme mekanizmasıdır.

Retry (Tekrar Deneme) Mantığı Nasıl Çalışır?

Tekrar deneme mekanizması, geçici hataları (transient errors) tolere etmek için tasarlanmıştır. Ağ kesintisi, API rate limit aşımı veya sunucu meşguliyeti gibi durumlar genellikle birkaç saniye sonra düzelir. Akıllı bir retry stratejisi bu fırsatı değerlendirir.

Pratikte en sık kullanılan üç yaklaşım şöyle sıralanabilir:

  • Sabit Aralıklı Deneme: Her denemede aynı süre beklenir (örn. 3 saniye).
  • Üstel Geri Çekilme (Exponential Backoff): Her başarısız denemede bekleme süresi katlanarak artar (2s → 4s → 8s). API’leri bunaltmamak için altın standarttır.
  • Jitter Eklemeli Backoff: Üstel beklemeye rastgele bir sapma eklenir. Aynı anda binlerce ajanın aynı API’ye yığılmasını önler.

Kilit Çıkarım: Sınırsız retry yapmak, sistemi kilitler. Maksimum deneme sayısı (örn. 5) ve toplam zaman aşımı (örn. 60 saniye) mutlaka tanımlanmalıdır.

Rollback (Geri Dönüş) Mantığı Ne İşe Yarar?

Rollback (Geri Dönüş) Mantığı Ne İşe Yarar?

Bir AI ajanı çok adımlı bir iş akışı yürütürken düşünün: Önce veritabanına kayıt ekliyor, sonra ödeme API’sine istek atıyor, ardından bildirim gönderiyor. Ödeme adımı başarısız olursa ne olacak? Veritabanındaki kayıt “hayalet veri” olarak kalır.

Rollback mekanizması tam da bu senaryolar için vardır. İki temel pattern öne çıkar:

Pattern Çalışma Prensibi Uygun Senaryo
Saga Pattern Her adımın bir “telafi işlemi” (compensating action) tanımlanır. Hata olunca geriye doğru telafi adımları çalıştırılır. Dağıtık sistemler, mikroservis mimarileri
Checkpoint/Snapshot Kritik adımlardan önce sistem durumu kaydedilir. Hata olunca en son checkpoint’e dönülür. Uzun süren ajan görevleri, veri işleme pipeline’ları

Güncel AI ajan framework’lerinde (LangChain, PydanticAI, CrewAI gibi) bu mekanizmalar genellikle yerleşik olarak sunuluyor. Ancak karmaşık iş akışlarında özel rollback mantığı yazmak kaçınılmaz.

Nerede Kullanılır? Pratik Senaryolar

Tekrar deneme ve geri dönüş stratejileri, otonom ajan sistemlerinin her katmanında karşımıza çıkar:

1. LLM API Çağrıları

OpenAI, Anthropic veya yerel model API’leri zaman zaman 429 (rate limit) veya 503 (service unavailable) hatası döndürür. Exponential backoff ile retry, bu durumları zarif şekilde yönetir.

2. Tool/Fonksiyon Çağrıları

Bir ajan harici bir servise (veritabanı, web scraper, dosya sistemi) erişirken hata alabilir. Retry ile geçici sorunlar aşılır; kalıcı hatalarda rollback devreye girer.

3. Çok Adımlı Görev Zincirleri

Örneğin bir “araştırma ajanı” şu adımları izliyor olsun: Arama yap → Sonuçları filtrele → Özet çıkar → Rapor oluştur. Üçüncü adımda hata olursa, ilk iki adımın sonuçları kaybolmamalı. Checkpoint mekanizması burada kritik.

Risk Seviyesi: Rollback olmadan çalışan çok adımlı ajanlar, veri tutarsızlığı riski taşır. Özellikle finansal işlemler veya kullanıcı verisi manipülasyonu içeren senaryolarda bu risk kabul edilemez düzeydedir.

Basit Örnek: Bir AI Ajanının Hata Yönetimi

Basit Örnek: Bir AI Ajanının Hata Yönetimi

Aşağıdaki pseudo-kod, retry ve rollback mantığının birlikte nasıl çalıştığını gösteriyor:


def execute_task_with_resilience(task):
    checkpoint = save_state()  # Mevcut durumu kaydet
    max_retries = 3
    
    for attempt in range(max_retries):
        try:
            result = task.run()
            return result  # Başarılı
        except TransientError:
            wait_time = 2 ** attempt  # Exponential backoff
            sleep(wait_time)
        except PermanentError:
            restore_state(checkpoint)  # Rollback
            raise TaskFailed("Kalıcı hata, geri dönüş yapıldı")
    
    restore_state(checkpoint)  # Max retry aşıldı, rollback
    raise TaskFailed("Maksimum deneme aşıldı")

Pro İpucu: Geçici (transient) ve kalıcı (permanent) hataları ayırt etmek kritik. Bir 404 hatası retry ile düzelmez; ancak 503 hatası genellikle birkaç saniye sonra geçer.

Doğru Bilinen Yanlışlar

  • “Her hatada retry yapılmalı”: Yanlış. Yetkilendirme hatası (401) veya geçersiz parametre (400) gibi durumlar retry ile çözülmez. Sadece kaynakları boşa harcar.
  • “Rollback her zaman mümkündür”: Yanlış. Gönderilmiş bir e-posta veya üçüncü parti API’ye yazılmış veri geri alınamaz. Bu tür “yan etkili” işlemler için idempotent tasarım gerekir.
  • “Framework’ler her şeyi halleder”: Kısmen yanlış. LangChain veya benzeri araçlar temel hata yönetimi sunar, ancak iş mantığına özgü rollback senaryolarını siz tanımlamalısınız.

Sıkça Sorulan Sorular

Retry sayısı ne kadar olmalı?

Genel kural: 3-5 deneme yeterlidir. Daha fazlası genellikle sorunu çözmez, sadece gecikme yaratır. Kritik sistemlerde “circuit breaker” pattern ile belirli bir hata eşiğinden sonra denemeler tamamen durdurulabilir.

Rollback başarısız olursa ne yapılır?

Bu durum “compensating transaction failure” olarak bilinir. Manuel müdahale için alarm mekanizması kurulmalı ve tutarsız durumlar bir “dead letter queue” benzeri yapıda loglanmalıdır.

Hangi framework’ler yerleşik retry/rollback desteği sunuyor?

PydanticAI otomatik retry mekanizmasıyla öne çıkıyor. LangGraph durum yönetimi ve checkpoint desteği sağlıyor. CrewAI ise görev bazlı hata yönetimi sunuyor. Ancak karmaşık senaryolarda özel implementasyon kaçınılmaz.

Sonsuz döngüye giren bir ajanı nasıl durdururum?

Toplam çalışma süresi için bir “timeout” tanımla. Ayrıca her retry döngüsüne maksimum iterasyon limiti koy. Bazı geliştiriciler “dead loop detection” için ajanın son N adımını karşılaştırıp tekrar eden pattern’leri tespit ediyor.

Sonuç

Otonom AI ajanları ne kadar akıllı olursa olsun, dış dünyayla etkileşimde hatalar kaçınılmazdır. Tekrar deneme stratejileri geçici aksaklıkları tolere ederken, geri dönüş mekanizmaları kalıcı hatalarda veri bütünlüğünü korur.

Uygulamada şu üç prensibi aklınızda tutun:

  1. Retry için üstel geri çekilme (exponential backoff) kullanın ve mutlaka bir üst limit belirleyin.
  2. Çok adımlı işlemlerde her kritik adım öncesi checkpoint alın veya Saga pattern uygulayın.
  3. Geçici ve kalıcı hataları ayırt eden bir hata sınıflandırma mantığı kurun.

Bu temelleri sağlam attığınızda, ajanlarınız beklenmedik durumlarda çökme yerine zarif bir şekilde toparlanır—ki bu, üretim ortamında güvenilirliğin anahtarıdır.

Efe avatarı
Teknoloji konularını günlük hayata uyarlayan içerikler hazırlar; konuyu uzatmadan, net adımlarla anlatmaya odaklanır. Kahve eşliğinde ürün karşılaştırmaları okumak ve yeni araçları denemek rutinidir.