الخطأ 429: ماذا تفعل عندما يفشل claude-sonnet-5

يعني الرمز 429 أنك وصلت إلى حد المعدل: تجاوز عدد الطلبات أو الرموز في نافذة زمنية حصة خطتك الحالية.

رمز 429 Too Many Requests هو استجابة تحديد معدل، وليس خطأ. يعني أن الطلب نفسه صالح لكنه تجاوز معدل الطلبات أو عدد الطلبات المتزامنة المسموح به في خطتك الحالية. يكفي الانتظار ضمن النافذة الزمنية الموضحة في ترويسة الاستجابة ثم إعادة المحاولة، دون الحاجة لتعديل جسم الطلب.

claude-sonnet-5 مقدمة من Anthropic. كل ما في هذه الصفحة — الأسباب والحلول والبيانات المقاسة — مستقى من السلوك التشغيلي الفعلي لهذا النموذج على مستوى البوابة.

في هذه البوابة، السبب الأكثر شيوعًا هو: طلبات متزامنة كثيرة جداً. والإجراء الأول الموصى به هو: تقليل التزامن وإعادة المحاولة بتأخير متزايد.

الأسباب الشائعة

  • طلبات متزامنة كثيرة جداً
  • نفدت حصة الخطة الحالية
  • إعادة المحاولة دون تأخير

كيفية الإصلاح

  • تقليل التزامن وإعادة المحاولة بتأخير متزايد
  • الانتقال إلى خطة بحصة أكبر
  • تخزين الطلبات المتكررة مؤقتاً

مثال على إعادة المحاولة مع تأخير أُسّي

الكود أدناه يعيد المحاولة عندما يُرجع claude-sonnet-5 الخطأ 429، حتى 5 محاولات، مع وقت انتظار متزايد وتشويش عشوائي حتى لا تُعيد الطلبات المتوازية المحاولة في اللحظة نفسها. اقرأ base URL ومفتاح API من متغيرات البيئة ولا تثبّتها داخل الكود.

import os, time, random
import requests

BASE  = os.getenv("OPENAI_BASE_URL")   # e.g. https://<your-gateway>/v1
KEY   = os.getenv("OPENAI_API_KEY")
MODEL = 'claude-sonnet-5'


def chat(messages, retries=5):
    """Retry with exponential backoff + jitter."""
    for i in range(retries):
        try:
            r = requests.post(
                BASE + "/chat/completions",
                headers={"Authorization": "Bearer " + KEY},
                json={"model": MODEL, "messages": messages, "stream": True},
                timeout=60,
            )
            if r.status_code == 429 or r.status_code >= 500:
                time.sleep(min(2 ** i + random.uniform(0, 1), 30))
                continue
            r.raise_for_status()
            return r.json()
        except requests.exceptions.Timeout:
            time.sleep(min(2 ** i + random.uniform(0, 1), 30))
    raise RuntimeError("gave up after " + str(retries) + " retries")


print(chat([{"role": "user", "content": "hello"}]))

بيانات أساسية لهذا النموذج

نقطة نهاية APIhttps://api.airai.cc/v1
متوافق مع OpenAIOpenAI-compatible
المزوّدAnthropic
السياق1M
القدراتReasoning, Tools, Files, Vision
صيغ APIopenai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search
صيغة الفوترةp * 2 + cr * 0.2 + cc * 2.5 + cc1h * 4 + c * 10

الأسئلة الشائعة

ما المعلومات التي يجب تقديمها للدعم عند الإبلاغ عن مشكلة؟

احتفظ بمعرّف الطلب ونص الاستجابة الخام، وإلا لا يمكن تتبّع شيء. إذا حدث ذلك في بيئة الإنتاج فقط، فالسبب غالباً فرق في البيئة لا في النموذج. هذا النموذج مقدّم من Anthropic، وبالتالي حالة المصدر تتبع إعلانات المزوّد. سجّل معرّف الطلب عند كل فشل — هو أنفع من رمز الحالة. أعد إنتاج المشكلة أولاً في بيئة اختبار بنفس جسم الطلب.

هل يجب إضافة تشويش عشوائي (jitter) عند إعادة المحاولة؟

عادةً لا حاجة لتعديل كود العمل، يكفي ضبط وتيرة الاستدعاء. مع احتساب التكلفة بـ p * 2 + cr * 0.2 + cc * 2.5 + cc1h * 4 + c * 10، لا تُحسب الطلبات الفاشلة ضمن الاستخدام. اجعل حد المحاولات من 3 إلى 5 وأضف تشويشاً عشوائياً. استخدم تراجعاً أُسّياً للأخطاء القابلة لإعادة المحاولة، وأرجع الخطأ فوراً للباقي.

هل يرتبط 429 بطريقة فوترة claude-sonnet-5؟

تُحاسب فقط على المخرجات التي أُنتجت بالفعل، أما الجزء الفاشل فلا. مع احتساب التكلفة بـ p * 2 + cr * 0.2 + cc * 2.5 + cc1h * 4 + c * 10، لا تُحسب الطلبات الفاشلة ضمن الاستخدام. تحقق من الرصيد وحدود المعدل في لوحة التحكم أولاً، ثم افحص الكود.

هل يرتبط 429 على claude-sonnet-5 بحجم جسم الطلب؟

يجب تعديل معاملات الطلب، فإعادة المحاولة وحدها لن تفيد. هذه مشكلة إعدادات من جانب العميل، ولا يحتاج الخادم لأي تغيير. وسوم القدرات هي Reasoning, Tools, Files, Vision، وتتبعها حدود المعاملات. بالنسبة لأخطاء المعاملات، أفشل بسرعة بدل إهدار المحاولات.

أخطاء أخرى في هذا النموذج

نماذج أخرى تواجه الخطأ نفسه

تحديث البيانات: 2026-10-10 15:40

الدعم الفنيالدعم المباشر
العودة إلى الأعلى