AI Engineering Academy · Ders

Hata İşleme ve İstek Hız Sınırları

İstek hızı sınırı istisnaları, kimlik doğrulama hataları ve zaman aşımı gibi yaygın API hatalarını yeniden deneme mantığı ve üstel geri çekilme kalıplarıyla ele alın.

4. ders / 413 adım

Hata İşleme ve İstek Hız Sınırları, CoddyKit'te ücretsiz bir AI Engineering Academy 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 Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

API Hataları Neden Oluşur

Bir API çağrısında pek çok şey ters gidebilir: aşırı yük, düşük kota, kesilen ağ bağlantısı veya hatalı istek. Çağrıları hatasız kabul etmek kırılgan kodu garanti eder; önce hata türlerini öğrenin.

OpenAI Hata Türlerine Genel Bakış

SDK, RateLimitError ve AuthenticationError gibi belirli istisnalar oluşturur. Yalnızca hız sınırı veya ağ kesintisi gibi geçici hatalar yeniden denenmeye değerdir; diğerleri kendiliğinden düzelmez.

Try-Except ile Hataları Yakalama

Her çağrıyı try-except içine alın ve genel bir except yerine belirli istisnaları yakalayın. Böylece hataları gizlemek yerine her başarısızlığa uygun şekilde yanıt verebilirsiniz. Kodda nasıl yapılacağı gösterilmiştir.

import openai

client = openai.OpenAI()

try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Hello!'}]
    )
    print(response.choices[0].message.content)
except openai.AuthenticationError as e:
    print('Bad API key. Check OPENAI_API_KEY environment variable.')
    raise  # do not retry
except openai.RateLimitError as e:
    print('Rate limited. Back off and retry.')
except openai.APIConnectionError as e:
    print('Network error:', e)
except openai.APIStatusError as e:
    print('Server error', e.status_code, e.message)

Hız Sınırlarını Anlama

OpenAI aynı anda iki hız sınırı uygular: dakika başına istek (RPM) ve dakika başına belirteç (TPM). Tek bir büyük istem, tek çağrıda TPM sınırınızı aşabilir. Her ikisi de 429 döndürür.

Üstel Geri Çekilme: Doğru Yeniden Deneme Stratejisi

Hız sınırına mı takıldınız? Bekleyin ve ardından üstel geri çekilmeyle yeniden deneyin: 1 saniye, 2 saniye, 4 saniye; her seferinde iki katına çıkarın. Biraz değişkenlik ve en fazla yeniden deneme sayısı ekleyerek sonsuz döngüyü önleyin. Koda bakın.

import time
import random
import openai

client = openai.OpenAI()

def call_with_backoff(messages, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model='gpt-4o-mini',
                messages=messages
            )
        except openai.RateLimitError:
            if attempt == max_retries - 1:
                raise
            wait = (2 ** attempt) + random.uniform(0, 1)
            print(f'Rate limited. Waiting {wait:.1f}s (attempt {attempt+1})')
            time.sleep(wait)
        except (openai.APIConnectionError, openai.APIStatusError):
            if attempt == max_retries - 1:
                raise
            time.sleep(2 ** attempt)

tenacity Kütüphanesini Kullanma

Yeniden denemeleri kendiniz yazmayın; tenacity kütüphanesi bunu temiz bir şekilde yapar. İşlevinizi @retry ile dekore ettiğinizde geri çekilmeyi, değişkenliği ve yeniden deneme koşullarını sizin için yönetir.

from tenacity import retry, wait_random_exponential, stop_after_attempt
import openai

client = openai.OpenAI()

@retry(
    wait=wait_random_exponential(min=1, max=60),
    stop=stop_after_attempt(6)
)
def completion_with_backoff(**kwargs):
    return client.chat.completions.create(**kwargs)

response = completion_with_backoff(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Tell me a joke.'}]
)
print(response.choices[0].message.content)

Zaman Aşımı Yapılandırması

Yanıt vermeyen bir istek uygulamanızı sonsuza kadar dondurabilir; bu nedenle her zaman bir zaman aşımı belirleyin. SDK, istemci düzeyinde veya çağrı başına saniye cinsinden zaman aşımı kabul eder. Değeri beklenen yanıt uzunluğunuza göre seçin.

import openai

# Set a default timeout for all requests from this client
client = openai.OpenAI(timeout=30.0)

# Or override per request
try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Summarize the French Revolution.'}],
        timeout=60.0
    )
except openai.APITimeoutError:
    print('Request timed out. Try a shorter prompt or increase timeout.')

Kimlik Doğrulama Hatalarını Yönetme

Bir AuthenticationError (401), anahtarınızın yanlış, süresinin dolmuş veya iptal edilmiş olduğu anlamına gelir; yeniden denemek hiçbir işe yaramaz. Günlüğe kaydedin, uyarı gönderin ve yeniden deneme hakkınızı tüketmek yerine hemen başarısız olun.

import os
import openai

api_key = os.environ.get('OPENAI_API_KEY')
if not api_key:
    raise EnvironmentError(
        'OPENAI_API_KEY not set. Export it before running.'
    )

client = openai.OpenAI(api_key=api_key)

try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Hello'}]
    )
except openai.AuthenticationError:
    # Do NOT retry - the key itself is invalid
    raise RuntimeError('Invalid API key. Check OPENAI_API_KEY.')

Kota ve Hız Sınırları

Her ikisi de RateLimitError gibi görünür, ancak farklıdır: hız sınırları kendiliğinden sıfırlanan dakika başına kısıtlamalardır; kota sınırları ise daha fazla kredi gerektiren harcama tavanlarıdır.

Hata Ayıklama için Hataları Günlüğe Kaydetme

Üretim ortamında her hatayı bağlamıyla birlikte günlüğe kaydedin: türü, modeli, parametreleri, belirteç sayısını, zamanı ve istek kimliğini. OpenAI desteğinin ihtiyaç duyduğu bilgi tam olarak bu istek kimliğidir. Koda bakın.

import logging
import openai

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

client = openai.OpenAI()

def safe_completion(model, messages):
    try:
        response = client.chat.completions.create(
            model=model, messages=messages
        )
        return response
    except openai.RateLimitError as e:
        logger.warning(
            'Rate limit hit',
            extra={'model': model, 'error': str(e)}
        )
        raise
    except openai.APIStatusError as e:
        logger.error(
            'API server error',
            extra={
                'status_code': e.status_code,
                'request_id': e.request_id,
                'model': model
            }
        )
        raise

Üretim Uygulamalarında Hata Yönetimi

Sağlam bir üretim stratejisi şöyledir: kurtarılamayan hatalarda hemen başarısız olun, geçici hataları geri çekilmeyle yeniden deneyin ve uygun alternatifler sunun. Tek bir API hatasının tüm sunucunuzu çökertmesine asla izin vermeyin.

Hızlı Kontrol

Bu dersteki Yapay Zekâ Mühendisliği kavramlarını ne kadar anladığınızı test edin.

Ders Özeti

Başarısızlıkları yönetmeyi öğrendiniz: OpenAI belirli istisnalar oluşturur, hız sınırları değişkenlik içeren geri çekilme gerektirir ve kimlik doğrulama hatalarında hemen başarısız olunmalıdır. Sırada: güçlü istemler yazmak.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Hata İşleme ve İstek Hız Sınırları” dersi ücretsiz mi?

Evet — “Hata İşleme ve İstek Hız Sınırları” 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 Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Hata İşleme ve İstek Hız Sınırları” dersinde ne öğreneceğim?

İstek hızı sınırı istisnaları, kimlik doğrulama hataları ve zaman aşımı gibi yaygın API hatalarını yeniden deneme mantığı ve üstel geri çekilme kalıplarıyla ele alın. AI Engineering Academy 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 Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, 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.

“Hata İşleme ve İstek Hız Sınırları” 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 Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy 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. Python Ortamınızı Kurma
  2. Sohbet Tamamlama Uç Noktası
  3. Parametrelerle Model Davranışını Denetleme
  4. Hata İşleme ve İstek Hız Sınırları
← AI Engineering Academy Sayfasına Dön