انتقل للمحتوى
علي هيثم·TECH·يردّ خلال أقل من ساعة
  • الرئيسيةابدأ من هنا
  • الأعمالدراسات حالة، مشاريع
  • الخدماتما الذي سأبنيه لك
  • المدونةمقالات، سلاسل
  • التدريبدورات، مختبرات، دورات
  • عنّيالمهندس وراء هذا الموقع
تسجيل الدخولابدأ مشروع
علي هيثم · TECH
  • الرئيسية↗
  • الأعمال↗
  • الخدمات↗
  • المدونة↗
  • التدريب↗
  • عنّي↗
تسجيل الدخولابدأ مشروع
متاح
علي هيثم·TECH

استوديو هندسي. دمشق، GMT+3.

aliyosef.online

الاستوديو

  • الأعمال
  • المدونة
  • التدريب
  • عنّي
  • تواصل معي

البوابة

  • تسجيل الدخول
  • فتح تذكرة دعم
  • متابعة مشروع
  • حسابي

مصادر

  • الوثائق
  • حالة الأنظمة
  • سجلّ التغييرات
  • حزمة العلامة
  • الخصوصية
  • الشروط

النشرة

ملاحظات تقنية وأخبار، أسبوعياً. بدون حشو.

مجاني. إلغاء الاشتراك متى ما حبيت.

تابعني على
© 2026 علي هيثم يوسف. جميع الحقوق محفوظة.مبنيّ يدويًا بـ React 19.آخر نشر · 2026-05-08كل الأنظمة تعمل
  1. الرئيسية/
  2. المدوّنة/
  3. هندسة AI
هندسة AI

حواجز تكلفة لـ آليّات الـ AI

مكتبة محاسبة صغيرة بترجع تكلفتها بثلاث أسابيع. Tokens، retries، وإنذار الـ budget.

١٠ كانون الثاني ٢٠٢٦·6 دقائق·بقلم علي يوسف

جاري تحميل المقال…

شاركXLinkedInRSS
استلم المقال التالي في بريدك.مقال جديد كل أحد. هندسة بلغة واضحة. مجاني، يمكنك إلغاء الاشتراك في أي وقت.اشترك→
AY
علي هيثم يوسف

مهندس وكاتب. أبني منصات متعدّدة المستأجرين، محرّكات مزامنة، وأنظمة موثوقة بهدوء. أكثر من ٦٠٠ مشروع مُسلَّم منذ ٢٠١٥.

اشتركابدأ مشروعاً→

اقرأ بعدها

  • AP
    Series
    ٢ شباط ٢٠٢٦·هندسة AI

    الهندسة المقترنة بـ AI، الجزء الأول: آليّة العمل

    افتتاح السلسلة. وين بساعد النموذج، وين بكذب، وكيف بنينا إيقاع يومي حول الاثنين.

    11 دقيقة
  • SD
    ٢٦ كانون الثاني ٢٠٢٦·هندسة AI

    تطوير مدفوع بالمواصفات مع LLMs

    spec النموذج فيه يشتغل بدون rework. البنية، الـ anti-patterns، والـ diff الفعلي.

    9 دقائق
  • ES
    ١٨ كانون الثاني ٢٠٢٦·هندسة AI

    Eval suites للأدوات غير الحتمية

    كيف تختبر شي بيعطي جواب مختلف مرّتين. الـ harness، الـ tolerances، والـ budget.

    8 دقائق
←العودة إلى كل المقالات

نداء النموذج يكلّف سنتات. حلقة إعادة محاولة سيّئة تكلّف مئات الدولارات في عصر يوم واحد. أوّل فاتورة AI فاجأتنا تتبّعت إلى ميزة واحدة حيث، على مسار خطأ معيّن، أعاد الكود المحاولة حتّى ثلاثين مرّة قبل الاستسلام. الدالّة «عملت». الفاتورة لم.

هذا المقال عن مكتبة المحاسبة الصغيرة التي كتبناها استجابة، والتي دفعت ثمن نفسها أضعافاً.

ما هي المكتبة فعلاً#

غلاف حول كلّ نداء نموذج:

  1. يعدّ التوكنات قبل الإرسال.
  2. يسجّل الاستخدام الفعليّ من الردّ.
  3. يُسنِد كليهما إلى زوج (مستأجر، ميزة).
  4. يرفض إرسال النداء إن تجاوز المستأجر الميزانيّة.

حوالي ٢٠٠ سطر كود إجمالاً. الشيء كلّه طبقة رقيقة بين «كودي» و «SDK النموذج». تبدو هكذا:

type Caller = { tenantId: string; feature: string };

interface ModelCall {
  prompt: string;
  model: 'cheap' | 'medium' | 'expensive';
  maxOutputTokens: number;
}

class GuardedClient {
  async call(caller: Caller, req: ModelCall): Promise<string> {
    const inputTokens = await this.countTokens(req.prompt, req.model);
    const projectedCost = this.priceOf(req.model, inputTokens, req.maxOutputTokens);

    if (!await this.budget.canAfford(caller, projectedCost)) {
      throw new BudgetExceeded(caller, projectedCost);
    }

    const start = Date.now();
    const result = await this.upstream.complete(req);
    const elapsed = Date.now() - start;

    await this.budget.charge(caller, {
      inputTokens,
      outputTokens: result.usage.output_tokens,
      cost: this.priceOf(req.model, inputTokens, result.usage.output_tokens),
      elapsed,
      feature: caller.feature,
    });

    return result.text;
  }
}

خمسة أشياء حاملة للثقل في تلك الأسطر القليلة.

١. عدّ التوكنات قبل الإرسال#

كلفة النداء تقريباً input_tokens × input_price + output_tokens × output_price. يمكننا معرفة input_tokens بدقّة قبل الإرسال؛ علينا تخمين output_tokens، ولهذا maxOutputTokens معامل مطلوب. الإسقاط هو «الإدخال + أقصى إخراج»؛ الرسم الفعليّ هو «الإدخال + الإخراج الفعليّ».

٢. فحص الميزانيّة صلب، لا ليّن#

canAfford يعيد false إن كان إنفاق المستأجر اليوميّ مع الكلفة المُسقطة سيتجاوز السقف. نرمي، لا نُحذِّر. التحذيرات الليّنة تُتجاهل.

٣. إسناد (مستأجر، ميزة)#

كلّ رسم مُسنَد لكليهما. هذا يدعنا نُجيب عن سؤالَين مختلفَين:

  • «أيّ المستأجرين الأكثر كلفة؟» (مجموع حسب المستأجر)
  • «أيّ الميزات الأكثر كلفة؟» (مجموع عبر المستأجرين حسب الميزة)

الكلفة-لكلّ-ميزة هي الأكثر إثارة للاهتمام. بعد ثلاثة أشهر اكتشفنا أنّ ميزة بالكاد مستخدمة كانت مسؤولة عن ٤٠٪ من الإنفاق، لأنّها شغّلت نموذجاً مسهباً على prompt من ٥٠ KB والمستخدم العاديّ نقر عليها مرّتين في الجلسة. أعدنا كتابتها بـ prompt أصغر ونموذج أرخص؛ انخفضت الكلفة-لكلّ-نداء ١٢×.

٤. زمن الجدار، لا التوكنات فقط#

نسجّل الزمن المنقضي بجانب الكلفة. النداءات البطيئة ليست دائماً باهظة، لكنّ ميزة تستغرق دائماً ٩ ثوانٍ مشكلة UX حتّى لو لم تكلّف شيئاً.

٥. لكلّ مستأجر، لا لكلّ مستخدم#

الميزانيّة على المستأجر (الشركة)، لا المستخدم الفرديّ. هذا يطابق كيف تُدفَع الكلف. يتجنّب أيضاً الـ bug حيث مستخدم admin بصلاحيّات يحرق ميزانيّة-مستخدم زميل لم يوافق.

ما الذي نضبط الميزانيّة عليه#

ثلاث فئات ميزانيّة، مُعلَنة لكلّ خطّة مستأجر:

الخطّةيوميّاً $شهريّاً $الإجراء عند التجاوز
مجّاني٠٫١٠١٫٠٠احجب، اقترح ترقية
Pro٥٫٠٠١٠٠احجب، نبّه admin المستأجر
Enterpriseحسب العقدحسب العقدسقف ليّن، نبّه الدعم

اختياران غير بديهيَّين:

الفئة المجّانيّة لها ميزانيّة غير صفر#

اعتبرنا «الفئة المجّانيّة لا تحصل على شيء». معادٍ. ميزانيّة الـ ١٠ سنتات اليوميّة تغطّي حوالي ٣٠ نداء نموذج رخيص، وهو كافٍ ليُقيّم المستخدم الميزة بدون أن نُموّل آلاف النداءات لكلّ مستخدم مجّانيّ.

Enterprise لها سقف ليّن#

السقف الصلب على Pro هو الافتراضيّ الصحيح؛ لـ Enterprise، حجب سير عملهم لأنّ admin لديهم نسي تحديث السقف عند تجديد العقد عمل سيّئ. سقف ليّن، تنبيه، محادثة.

فخّ «الفشل المفتوح»

السقوف الليّنة مغرية. «استمرّ فقط إن تجاوز السقف؛ سنُسوّي لاحقاً». عالميّاً، هكذا حدث الحادث الأصليّ. اجعل السقوف الليّنة الاستثناء الصريح، مع سجلّ تدقيق ومسار تصعيد. افتراضيّ صلب.

ما نُقَيس#

لوحة معلومات صغيرة بخمس لوحات:

  1. الإنفاق لكلّ ساعة، آخر ٢٤ ساعة. يخبرنا متى تحدث ذروة.
  2. أعلى ١٠ ميزات حسب إنفاق اليوم. يخبرنا أين الذروة.
  3. أعلى ١٠ مستأجرين حسب إنفاق اليوم. يخبرنا من المتأثّر.
  4. متوسّط الكلفة لكلّ نداء، حسب الميزة، أسبوعيّاً. يخبرنا متى جعل تغيير عرضيّ شيئاً باهظاً.
  5. عدد فحوص الميزانيّة الفاشلة، حسب الميزة. يخبرنا متى نحن تحت الميزانيّة مقابل متى لدينا ميزة لا يجب أن تكون قد بُنيت أصلاً.

ثلاثة أشهر من التشغيل علّمتنا أنّ #٤ هي الأكثر فائدة. خطّ «زيادة كلفة لكلّ نداء ١٥٪» على ميزة هو مؤشّر سابق على أنّ شخصاً عدّل prompt أو رقّى نموذجاً دون قصد.

ماذا التقطت#

أشياء حقيقيّة من إنتاج حقيقيّ:

  1. حلقة إعادة محاولة بدون exponential backoff كلّفت ~$٢٠٠ في عصر حين كان الـ upstream في فترة متدهورة. التُقطت عند ~$٤٠ بسقوف يوميّة لكلّ مستأجر.
  2. ميزة استخدم فيها مطوّر متحمّس النموذج الباهظ «من أجل الجودة» دون فحص الكلفة. التُقطت بلوحة اتّجاه لكلّ ميزة قبل أن تتسع لكلّ المستأجرين.
  3. prompt نما على مدى ستّة أشهر مع إضافة الفريق سياقاً إليه. كلّ إضافة كانت صغيرة؛ المجموع كان ٣× عدد التوكنات الأصليّ. التُقط باتّجاه الكلفة-لكلّ-نداء.
  4. bug حيث كان مدخل مستخدم سلسلة فارغة يُرسَل إلى النموذج والنموذج استجاب مطيعاً بعدّة فقرات من اللاشيء. أضفنا حارس مدخل فارغ.

الـ ROI#

أنفقنا حوالي أسبوعاً على المكتبة. منعت على الأقلّ أربع حوادث كانت ستكلّف أكثر من ذلك الوقت الهندسيّ. سمحت لنا أيضاً بالبناء بثقة مع نداءات نموذج بطرق ما كنّا لنفعل بدونها. التأثير النفسيّ «نعرف ماذا يكلّف هذا» قيّم على الأقلّ بقدر التوفير بالدولار.

الجزء التالي من هذه السلسلة يلفّ مسار الـ AI. أو اقفز إلى مسار الأداء إن أردت شكلاً مختلفاً من المقال.