منتجك فيه ميزة ذكاء اصطناعي، وفجأة وقفت. في سجل السيرفر تلقى خطأ 429 ومعه You exceeded your current quota, please check your plan and billing details. معناه إن حساب OpenAI ما عاد فيه رصيد، أو وصل للحد اللي حطيته، فـ OpenAI يرفض كل طلب حتى يتعالج الحساب.
429 نوعين، والحل يختلف
نفس رقم الخطأ يطلع لسببين مختلفين، والفرق في نص الرسالة:
- `You exceeded your current quota` أو أي 429 نوعه
insufficient_quota: المشكلة في الفلوس. شوف حقلerror.code:credit_balance_exhaustedيعني الرصيد خلص، وproject_spend_limit_exceededأوorganization_spend_limit_exceededيعني وصلت لحد الإنفاق اللي حطيته. إعادة المحاولة ما تفيد أبد، كل طلب بيرجع نفس الخطأ. - `Rate limit reached`: المشكلة في السرعة. طلبات أو tokens أكثر من المسموح لحسابك في الدقيقة. هنا إعادة المحاولة بعد ثواني، وكل مرة تنتظر أكثر من اللي قبلها، هي الحل الصح.
ليش يصير فجأة
- الرصيد المدفوع مقدمًا خلص. حسابات OpenAI للمطورين غالبًا تشتغل برصيد تشحنه مقدمًا. إذا الشحن التلقائي مو مفعّل، الرصيد يخلص في يوم وتوقف الميزة بدون ما يوصلك شي.
- وصلت لحد الإنفاق اللي حطيته (إذا مفعّل فيه Enforce a hard limit، لأن التنبيه وحده ما يوقف شي). وهذا زين: الحد سوّى شغله. السؤال: ليش وصلت له؟
- المنتج المنشور يستخدم مفتاح غير اللي تتوقعه. مثلًا مفتاح من حساب التجربة القديم، أو من مشروع (Project) ثاني في نفس الحساب حدّه أقل.
- استهلاك ما تعرف عنه. حلقة في الكود تطلب نفس الشي مرات، أو مستخدم واحد يرسل آلاف الطلبات، أو مفتاحك انكشف وأحد ثاني يستخدمه.
كيف تتأكد بنفسك
- افتح لوحة OpenAI للمطورين، وشوف صفحة الفوترة (Billing): كم الرصيد؟ والشحن التلقائي مفعّل؟
- شوف صفحة الحدود (Limits): كم حد الإنفاق للحساب ولكل مشروع؟
- افتح صفحة الاستخدام (Usage) وشوف الاستهلاك يوم بيوم. ارتفاع مفاجئ في يوم معيّن يعني فيه شي تغيّر ذاك اليوم.
- تأكد من المفتاح اللي في إعدادات السيرفر المنشور: آخر أحرفه تطابق مفتاح في الحساب والمشروع اللي تتوقعه؟
إذا الاستهلاك في أوقات ما فيها زوار، أو على نماذج ما يستخدمها منتجك، اترك كل شي وروح لدرس مفتاح OpenAI انكشف؟. أول خطوة هناك إلغاء المفتاح.
الحل الصح
- إذا الاستهلاك طبيعي ومنتجك يكبر: اشحن الرصيد، وفعّل الشحن التلقائي بحد معقول، وحط تنبيه إنفاق (spend alert) قبل ما توصل للحد.
- حط حد لكل مستخدم: كم طلب يقدر يسوي في الساعة أو في اليوم. هذا يحميك من مستخدم واحد يصرف فاتورة الشهر.
- حدّد طول الرد (
max_tokensأو ما يقابله)، واختار نموذج أرخص للمهام البسيطة. مو كل سؤال يحتاج أكبر نموذج. - إذا نفس السؤال يتكرر كثير، احفظ الجواب (cache) بدل ما تطلبه كل مرة.
- لما يرجع 429، المنتج يعرض للمستخدم رسالة واضحة إن الميزة متوقفة مؤقتًا، بدل صفحة بيضاء أو دوران بدون نهاية. وأنت يوصلك تنبيه.
كم يستهلك كل مستخدم؟
كل رد من OpenAI يرجع معه عدد الـ tokens اللي استهلكها الطلب (في حقل usage). سجّل هالرقم مع رقم المستخدم في كل طلب، وبعد أسبوع تعرف بالضبط: مين أكثر مستخدم يستهلك، وأي ميزة أغلى، وكم تكلّف المستخدم الواحد في الشهر. انتبه بعد إن النص العربي غالبًا ياخذ tokens أكثر من نفس الكلام بالإنجليزي، فاحسب التكلفة على محادثات عربية حقيقية من منتجك، مو على أمثلة إنجليزية.
الحل اللي لا تسويه
- إعادة المحاولة التلقائية على `insufficient_quota`: ما بتنجح، وبتملأ السجلات وتبطّئ منتجك.
- حساب جديد أو مفتاح جديد كل ما خلص الرصيد: يخفي السبب بدل ما يعالجه. ولو المفتاح القديم مكشوف، المشكلة بتلحقك.
- ترفع الحد بدون ما تعرف ليش وصلت له: إذا السبب حلقة في الكود أو مفتاح مسروق، رفعت سقف الخسارة فقط.
نفس الكلام ينطبق على Anthropic و Google وغيرها: أسماء الأخطاء تختلف، والفكرة وحدة.
تبي أحد يراجع تكلفتها؟
إذا تبي تعرف كم تكلّف ميزة الذكاء الاصطناعي لكل مستخدم قبل ما تكبر، شوف كم يكلّف تشغيل تطبيقك شهريًا؟. وإذا تبي مهندس يشوف وين يروح الاستهلاك ويحط الحدود معك، ابدأ بـ مكالمة استشارية، أو خلّنا نصلّحها لك في الإصلاح المباشر.