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

كيف تقوم Midjourney بالفوترة

تمنح خطط اشتراك Midjourney المستخدمين عددًا محددًا من «ساعات GPU السريعة» كل شهر. تمثل هذه الساعات الوقت الحسابي الفعلي الذي يُستغرق في عمليات الإنشاء.
الخطةالسعرساعات GPU السريعةوضع الاسترخاءوضع التخفي
Basic$10/month~3.3 hrsNoNo
Standard$30/month15 hrsUnlimitedNo
Pro$60/month30 hrsUnlimitedYes
Mega$120/month60 hrsUnlimitedYes
  1. مستويات التسعير: تقدم Midjourney أربعة مستويات اشتراك تتراوح من 10 دولارات إلى 120 دولارًا شهريًا، مع توفير عدد محدد من ساعات GPU السريعة لكل مستوى.
  2. وضع الاسترخاء: تتضمن الخطط من المستوى Standard فما فوق توليدًا غير محدود عبر قائمة انتظار منخفضة الأولوية بعد نفاد الساعات السريعة، ما يضمن عدم وصول المستخدمين إلى حائط استخدام صلب.
  3. ساعات GPU إضافية: يمكن للمستخدمين شراء وقت GPU سريع إضافي بحوالي 4 دولارات للساعة إذا احتاجوا إلى نتائج فورية بعد نفاد الحصة الشهرية.
  4. القياس بالثواني: يتم تتبع الاستخدام بناءً على الوقت الحسابي الفعلي المستغرق في عمليات الإنشاء، ما يعني أن العمليات المعقدة تكلف أكثر من المسودات البسيطة.
  5. حلقة المجتمع: يمكن للمستخدمين النشطين كسب ساعات GPU إضافية من خلال تقييم الصور في المعرض، ما يساعد في تدريب النماذج مع مكافأة المجتمع.

ما الذي يجعله مميزًا

يُعد نموذج Midjourney فعالًا لأنه يوازن بين التكلفة والقيمة واستخدام الموارد.
  • الفوترة حسب وقت GPU لمواءمة التكلفة مع استخدام الموارد، ما يضمن أن العمليات المعقدة تُسعَّر بعدالة مقارنةً بالمسودات البسيطة.
  • وضع الاسترخاء يوفر خيارًا احتياطيًا غير محدود يُقلل من التسرب من خلال الحفاظ على الوصول إلى الخدمة حتى بعد تجاوز الحدود الشهرية.
  • الانقسام بين Fast و Relax يحفز الترقية من خلال تقديم معالجة أولوية للمستخدمين الذين يقدّرون السرعة والنتائج الفورية.
  • ساعات GPU الإضافية توفر خيارًا مرنًا لإعادة الشحن للمستخدمين القوى الذين يحتاجون إلى سعة أولوية إضافية في منتصف الشهر.

بناء هذا باستخدام Dodo Payments

يمكنك تكرار هذا النموذج باستخدام Dodo Payments من خلال الجمع بين الاشتراكات وأدوات قياس الاستخدام والمنطق التطبيقي.
1

Create a Usage Meter

أولًا، أنشئ عدادًا لتتبع ثواني GPU المستخدمة من قِبل كل عميل.
  • اسم العداد: gpu.fast_seconds
  • التجميع: Sum (sum the gpu_seconds property from each event)
سوف تتتبع فقط الأحداث التي يكون فيها وضع التوليد “سريعًا”. إن توليدات وضع الاسترخاء غير مُقاسة لأغراض الفوترة.
2

Create Subscription Products with Usage Pricing

أنشئ منتجات الاشتراك وأرفق عداد الاستخدام مع حد مجاني.
المنتجالسعر الأساسيالحد المجاني (بالثواني)معدل التجاوز
Basic$10/month12,000 (3.3 hrs)N/A (Hard Cap)
Standard$30/month54,000 (15 hrs)$0.00 (Relax Mode)
Pro$60/month108,000 (30 hrs)$0.00 (Relax Mode)
Mega$120/month216,000 (60 hrs)$0.00 (Relax Mode)
بالنسبة لخطة Basic، ستقوم بتعطيل التجاوز لفرض حد صارم. أما بالنسبة للخطط الأخرى، فيتم التعامل مع “وضع الاسترخاء” من خلال منطق التطبيق الخاص بك عندما يُظهر العداد أن الحد قد تم تجاوزه.
3

Implement Application-Level Relax Mode

الرؤية الأساسية هي أن وضع الاسترخاء ليس ميزة فوترة، بل هو توجيه التطبيق للطلبات إلى قائمة انتظار أبطأ عندما يُظهر عداد Dodo للاستخدام أن الحد قد تم بلوغه.
async function handleGenerationRequest(customerId: string, prompt: string) {
  const usage = await getCustomerUsage(customerId, 'gpu.fast_seconds');
  const subscription = await getSubscription(customerId);
  const threshold = getThresholdForPlan(subscription.product_id);
  
  if (usage.current >= threshold) {
    if (subscription.product_id === 'prod_basic') {
      throw new Error('Fast GPU hours exhausted. Upgrade to Standard for Relax Mode.');
    }
    
    // Relax Mode. Route to low-priority queue
    return await queueGeneration(customerId, prompt, {
      priority: 'low',
      mode: 'relax',
      model: 'standard'
    });
  }
  
  // Fast Mode. Priority processing
  return await queueGeneration(customerId, prompt, {
    priority: 'high',
    mode: 'fast',
    model: 'premium'
  });
}
4

Send Usage Events (Fast Mode Only)

أرسل أحداث الاستخدام إلى Dodo فقط عند إجراء توليد في الوضع السريع.
import DodoPayments from 'dodopayments';

async function trackFastGeneration(customerId: string, gpuSeconds: number, jobId: string) {
  // Only track Fast mode generations. Relax mode is free and unlimited
  const client = new DodoPayments({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  });

  await client.usageEvents.ingest({
    events: [{
      event_id: `gen_${jobId}`,
      customer_id: customerId,
      event_name: 'gpu.fast_seconds',
      timestamp: new Date().toISOString(),
      metadata: {
        gpu_seconds: gpuSeconds,
        resolution: '1024x1024',
        mode: 'fast'
      }
    }]
  });
}
5

Sell Extra Fast Hours (One-Time Top-Up)

أنشئ منتج دفع مرة واحدة باسم “ساعة GPU سريعة إضافية” بسعر 4 دولارات. عندما يشتري العميل هذا، يمكنك منح حد إضافي أو أرصدة في تطبيقك.
// After customer purchases extra hours
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_extra_gpu_hour', quantity: 5 }
  ],
  customer: { customer_id: customerId },
  return_url: 'https://yourapp.com/dashboard'
});
6

Create Checkout for Subscription

أخيرًا، أنشئ جلسة تحقق للشتراك.
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_mj_standard', quantity: 1 }
  ],
  customer: { email: 'artist@example.com' },
  return_url: 'https://yourapp.com/studio'
});

تسريع الأمور باستخدام مخطط استيعاب نطاق الوقت

يبسط مخطط استيعاب نطاق الوقت تتبع وقت GPU من خلال توفير مساعدات مخصصة للفوترة القائمة على المدة.
npm install @dodopayments/ingestion-blueprints
import { Ingestion, trackTimeRange } from '@dodopayments/ingestion-blueprints';

const ingestion = new Ingestion({
  apiKey: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'live_mode',
  eventName: 'gpu.fast_seconds',
});

// Track generation time after a Fast mode job completes
const startTime = Date.now();
const result = await runGeneration(prompt, settings);
const durationMs = Date.now() - startTime;

await trackTimeRange(ingestion, {
  customerId: customerId,
  durationMs: durationMs,
  metadata: {
    mode: 'fast',
    resolution: '1024x1024',
  },
});
يتولى المخطط تحويل المدة وتنسيق الأحداث. كل ما عليك هو تزويد معرف العميل والوقت المستغرق.
يدعم مخطط نطاق الوقت الميلي ثانية والثانية والدقيقة. راجع التوثيق الكامل للمخطط للاطلاع على جميع خيارات المدة وأفضل الممارسات.

بنية Fast مقابل Relax

يعمل نظام قائمة الانتظار المزدوجة عن طريق توجيه الطلبات بناءً على حالة الاستخدام الحالية.
  1. تمرُّ جميع الطلبات عبر التطبيق الخاص بك.
  2. يتحقق التطبيق من عداد استخدام Dodo مقابل الحد المجاني للخطة.
  3. إذا كان الاستخدام أقل من الحد، يُرسل الطلب إلى قائمة Fast ويتم قياسه.
  4. إذا كان الاستخدام فوق الحد، يُرسل الطلب إلى قائمة Relax، وهي غير مُقاسة ذات أولوية أقل.
  5. لا تحتوي خطة Basic على بديل في وضع الاسترخاء، لذا يتم حظر الطلبات بمجرد الوصول إلى الحد.
يعد وضع الاسترخاء نمطًا على مستوى التطبيق، وليس ميزة فوترة في Dodo. تتتبع Dodo استخدام GPU السريع وتخبرك عند تجاوز الحد. يقرر تطبيقك ما إذا كان يمنع المستخدم أو يوجهه إلى قائمة انتظار أبطأ.

الميزات الرئيسية في Dodo المستخدمة