كتابات

· 3 دقائق قراءة

ميزانية لكل استدعاء ذكاء اصطناعي: حجز التكلفة في منصة متعددة المستأجرين

مزايا الذكاء الاصطناعي تُسعَّر بالتوكن، لكن التجار لا يدفعون بالتوكن. هذا هو النمط الذي تستخدمه نقرة لضمان ألا يصنع متجر أو خطأ برمجي فاتورة بلا سقف.

محمود عطيةمؤسس نقرة · طالب طب · مهندس برمجيات
  • الذكاء الاصطناعي
  • الهندسة
  • SaaS
Read in English

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

النمط الذي نستخدمه سهل الشرح: احجز قبل أن تستدعي، وسوِّ بعدها، وارفض حين تقول الميزانية لا.

ثلاثة حدود لثلاث مهام

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

احجز، استدعِ، سوِّ

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

async function withAiBudget<T>(storeId: string, est: Estimate, run: () => Promise<{ value: T; usage: Usage }>) {
  const maxCost = priceOf(est.model, est.inputTokens, est.maxOutputTokens);

  // 1. حجز ذري: يفشل إن تجاوز المتجر أو المنصة الميزانية.
  const reservation = await db.transaction(async (tx) => {
    await assertPlatformBreakerClosed(tx);
    const left = await remainingBudget(tx, storeId); // يقفل صف ميزانية المتجر
    if (left < maxCost) throw new BudgetExceeded(storeId);
    return tx.insert(aiReservations).values({ storeId, amount: maxCost }).returning();
  });

  try {
    // 2. استدعاء المزوّد.
    const { value, usage } = await run();
    // 3. التسوية بالتكلفة الحقيقية.
    await settle(reservation.id, priceOf(est.model, usage.input, usage.output));
    return value;
  } catch (err) {
    await release(reservation.id); // لم يُنفق شيء
    throw err;
  }
}

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

سجّل كل استدعاء بتكلفته

كل استدعاء يُسجَّل مع المتجر والميزة والنموذج والتوكنات والتكلفة. وهذا يعطيك ثلاثة أشياء مجانًا: صفحة استهلاك للتاجر، ورؤية لكل ميزة تُظهر ما يستحق ثمنه، ودليلًا حين يتصرف شيء بغرابة.

أبعد البيانات الشخصية عن التعليمات

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

لا ترتبط بمزوّد واحد

تتعامل المنصة مع Claude وOpenAI وGemini وغيرها عبر واجهة واحدة، وجدول الأسعار بيانات لا كود. هذا يتيح اختيار نموذج لكل ميزة، والتبديل حين تتغير الأسعار أو الجودة، وإبقاء منطق الميزانية في مكان واحد.

ماذا تكسب من هذا؟

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

إن كنت تضيف الذكاء الاصطناعي إلى منتج له أكثر من عميل، فابدأ بالحجز، لا بالتعليمات.

↑↓ تنقّل↵ فتحesc إغلاق
mahmoud@attia: ~