خطأ rate_limit_error من Anthropic: المعنى والسبب والحل

الحجم ليس المُطلِق الوحيد. Anthropic تراقب السرعة أيضاً، فمنحنى نمو يبدو نجاحاً على لوحتك قد يُقرأ كانفلات لدى API.

بقلم فريق benchr · · تم التحقق من توثيق أخطاء API لدى Anthropic في 12 يونيو 2026

AnthropicHTTP 429الخطورة: متوسطةحد استخدام

طريقان للوصول إليه

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

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

ماذا يعود إليك

{
  "type": "error",
  "error": {
    "type": "rate_limit_error",
    "message": "Your account has hit a rate limit."
  },
  "request_id": "req_011CSHoEeqs5C35K2UUqR7Fy"
}

فرّع بناءً على حقل type. يُظهر SDK بايثون هذا بصيغة anthropic.RateLimitError، فالتقط صنف الاستثناء؛ نصوص الرسائل صياغة لا عقد. كل رد يحمل أيضاً ترويسة request-id مسبوقة بـ req_ تكشفها الـ SDKs، وحين يتحول سؤال عن الحدود إلى تذكرة دعم، يكون ذلك المعرّف هو الفارق بين جواب سريع وآخر بطيء.

نعّم، ولا تركض

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

# Python: بركة عمّال تحوّل الدفعات إلى تدفّق ثابت
import asyncio
import anthropic

client = anthropic.AsyncAnthropic()
gate = asyncio.Semaphore(8)        # سقف الطلبات الجارية؛ اضبطه على فئتك

async def ask(prompt: str):
    async with gate:
        return await client.messages.create(
            model="claude-haiku-4-5",
            max_tokens=512,
            messages=[{"role": "user", "content": prompt}],
        )

async def run(prompts):
    return await asyncio.gather(*(ask(p) for p in prompts))

ثمانية عمّال يطحنون ألف موجّه ينتجون تدفقاً محدوداً ومتساوياً يُقرأ كعميل ثابت. ارفع حجم البركة بخطوات صغيرة على مدى أيام، فتصبح البوابة نفسها التي توقف الدفعات تصاعدك التدريجي.

اقتطع التوكنز، لا الجودة

أخطاء 429 المزمنة تعني أن العبء تجاوز الخطة، والحلول الرخيصة تُقلّص العبء بدل إخفاء الخطأ. تخزين الموجّهات يقتطع 90% من سعر إدخال السياق الذي تعيد إرساله في كل استدعاء. وBatch API يتولى كل ما يحتمل الانتظار بخصم 50% وخارج المسار الحي. والتوجيه هو أكبر رافعة: الاستدعاءات البسيطة عالية الحجم لا تحتاج نموذجاً متقدماً ما دام Claude Haiku 4.5 يعمل بسعر 1$ للإدخال و5$ للإخراج لكل مليون توكن. سعّر تقسيمتك بـالحاسبة؛ والحساب عادةً ينهي الاجتماع باكراً.

أسئلة شائعة

لماذا تصلني أخطاء 429 وأنا دون حدودي المعلنة؟

حدود التسارع. تحذّر وثائق Anthropic من أن الزيادات الحادة في الاستخدام قد تجذب أخطاء 429 حتى وأنت تحت أرقام فئتك. انمُ تدريجياً وأبقِ أنماط الحركة ثابتة؛ فالنمو العمودي هو المُطلِق.

هل يحل التراجع الأسّي هذه المشكلة؟

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

ما أرخص طريقة لخفض إنتاجية التوكنز؟

تخزين الموجّهات مع التوجيه. التخزين يخصم سياق الإدخال المتكرر بنسبة 90%، وإرسال الاستدعاءات البسيطة إلى Claude Haiku 4.5 بسعر 1$/5$ لكل مليون توكن يزيح أثقل الحركة عن نموذجك الأغلى.

سجل التغييرات

  • — نُشر. تم التحقق من سلوك حدود الاستخدام، ومأخذ حدود التسارع، وشكل الرد، وفق توثيق أخطاء API لدى Anthropic.

المراجع

  • Anthropic API errors — platform.claude.com/docs/en/api/errors (تم التحقق في 12 يونيو 2026)
  • benchr api-errors.json، السجل المُهيكَل لهذا الخطأ