0Pricing
AI Agents · Ders

Üstel Geri Çekilmeyle Yeniden Denemeler

Geçici hataları giderek artan gecikmeler ve titreşimle yeniden denemek için tenacity kullanın.

Üstel Geri Çekilmeyle Yeniden Denemeler, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. 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.

Yeniden Denemeler Neden Gerekli

Harici çağrılar (LLM'ler, arama API'leri, vektör veritabanları) geçici olarak hata verebilir. Basit bir yeniden deneme, kullanıcıyı rahatsız etmeden çoğu geçici hatadan kurtulmayı sağlar.

Yapılmaması Gerekenler

Sıkı bir döngüde anında yeniden deneme yapmayın — hizmeti aşırı yükler ve hız sınırlayıcı sizi engeller:

# BAD
for _ in range(10):
    try:
        return call_api()
    except Exception:
        pass

Üstel Bekleme

Her hatadan sonra daha uzun süre bekleyin. 2'nin üssünü kullanmak geleneksel yaklaşımdır:

import time

def call_with_backoff(fn, attempts=5):
    for i in range(attempts):
        try:
            return fn()
        except TransientError:
            if i == attempts - 1:
                raise
            time.sleep(2 ** i)   # 1, 2, 4, 8, 16 seconds

Değişken Gecikme Ekleyin

Değişken gecikme olmadan birçok istemcinin yeniden denemeleri aynı ana denk gelir ve sürü trafiği oluşturur. Rastgele bir ofset ekleyin:

import random
sleep = (2 ** i) + random.uniform(0, 1)
time.sleep(sleep)

Tenacity Kullanın

tenacity kütüphanesi bunu sizin için uygular:

from tenacity import retry, wait_exponential_jitter, stop_after_attempt, retry_if_exception_type
import requests

@retry(
    wait=wait_exponential_jitter(initial=1, max=30),
    stop=stop_after_attempt(5),
    retry=retry_if_exception_type((requests.Timeout, requests.ConnectionError))
)
def search(query):
    return requests.get('https://api.tavily.com/search', timeout=10).json()

Yalnızca Geçici Hataları Yeniden Deneyin

Şu durumlarda asla yeniden deneme yapmayın:

  • 4xx hataları (hatalı istek — yeniden denemek yardımcı olmaz)
  • Kimlik doğrulama hataları
  • Doğrulama hataları

Şu durumlarda yeniden deneme yapın:

  • Zaman aşımları
  • 5xx sunucu hataları
  • Hız sınırları (daha uzun beklemelerle)

Hız Sınırlarını Dikkate Alan Yeniden Denemeler

Retry-After üst bilgisini dikkate alın:

if response.status_code == 429:
    wait = int(response.headers.get('Retry-After', 5))
    time.sleep(wait)
    continue

Toplam Yeniden Deneme Süresini Sınırlayın

Yeniden denemelerin toplamda ne kadar sürebileceğini sınırlayın — kullanıcıya gösterilen bir çağrı için genellikle 30-60 saniye yeterlidir:

from tenacity import stop_after_delay

@retry(
    wait=wait_exponential_jitter(initial=1, max=10),
    stop=stop_after_delay(60)
)
def call_api():
    ...

İdempotentlik Üst Bilgileri

İdempotent olmayan API'lerde (Stripe vb.) her yeniden denemeye bir idempotentlik anahtarı ekleyin; böylece yinelenen işlemler birleştirilir:

headers = {'Idempotency-Key': f'agent-call-{run_id}-{tool_id}'}

LLM Çağrısını da Yeniden Deneyin

OpenAI ve Anthropic SDK'leri 1-2 kez otomatik olarak yeniden deneme yapar. Bunları yapılandırabilirsiniz:

client = OpenAI(max_retries=5, timeout=30.0)

Asenkron Yeniden Denemeler

Asenkron kod için:

from tenacity import AsyncRetrying

async for attempt in AsyncRetrying(wait=wait_exponential_jitter(), stop=stop_after_attempt(5)):
    with attempt:
        result = await call_api()

Yeniden Denemeleri Günlüğe Kaydetme

Her yeniden deneme şunları günlüğe kaydetmelidir: deneme numarası, uyuma süresi ve hata nedeni. Aksi hâlde "neden bu kadar yavaş?" sorusunun hata ayıklaması imkânsızdır.

Yeniden Denemeler ve Zaman Aşımları

Her deneme için kısa bir zaman aşımı (örneğin 10 saniye), toplam süre için de stop_after_delay aracılığıyla bir üst sınır (örneğin 60 saniye) belirleyin. İkisi de olmazsa takılı kalan bir bağlantı sonsuza kadar bekleyebilir.

Değişken Gecikme Neden Gerekli

Yeniden deneme gecikmelerine neden rastgele değişkenlik eklenir?

Özet

Üstel bekleme + değişken gecikme + sınırlı toplam süre + yalnızca geçici hatalarda yeniden deneme. Tekrarlayan yardımcı kodları atlamak için tenacity kullanın.

Sıkça Sorulan Sorular

“Üstel Geri Çekilmeyle Yeniden Denemeler” dersi ücretsiz mi?

Evet — “Üstel Geri Çekilmeyle Yeniden Denemeler” 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.

“Üstel Geri Çekilmeyle Yeniden Denemeler” dersinde ne öğreneceğim?

Geçici hataları giderek artan gecikmeler ve titreşimle yeniden denemek için tenacity kullanı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 2. dersidir.

“Üstel Geri Çekilmeyle Yeniden Denemeler” 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. İdempotent Araçlar ve Yan Etkiler
  2. Üstel Geri Çekilmeyle Yeniden Denemeler
  3. Zaman Aşımları ve Devre Kesiciler
  4. Araç Çıktılarını Doğrulama (Pydantic)
← AI Agents Sayfasına Dön