Zum Hauptinhalt springen
Midjourney ist eine generative KI-Plattform, die ein einzigartiges Abrechnungsmodell verwendet, das auf GPU-Zeit statt auf einer einfachen Bildanzahl basiert. Dieser Ansatz stellt sicher, dass komplexe, hochauflösende Renderings mehr kosten als schnelle, niedrigauflösende Entwürfe.

Wie Midjourney abrechnet

Die Abonnementpläne von Midjourney gewähren den Nutzern jeden Monat eine bestimmte Anzahl von „Fast GPU Hours“. Diese Stunden repräsentieren die tatsächlich für Ihre Generierungen aufgewendete Rechenzeit.
PlanPreisFast GPU HoursRelax ModeStealth Mode
Basic$10/month~3.3 hrsNoNo
Standard$30/month15 hrsUnlimitedNo
Pro$60/month30 hrsUnlimitedYes
Mega$120/month60 hrsUnlimitedYes
  1. Pricing Tiers: Midjourney bietet vier Abonnementstufen von $10 bis $120 pro Monat, wobei jede ein festgelegtes Kontingent an Fast-GPU-Stunden beinhaltet.
  2. Relax Mode: Standard- und höhere Pläne erlauben unbegrenzte Generierungen über eine niedrigpriorisierte Warteschlange, sobald die Fast-Stunden verbraucht sind, sodass Nutzer niemals auf eine harte Nutzungsgrenze stoßen.
  3. Extra GPU Hours: Nutzer können zusätzliche Fast-GPU-Zeit für ca. $4 pro Stunde erwerben, wenn sie nach Verbrauch ihres monatlichen Kontingents sofortige Ergebnisse benötigen.
  4. Metering in GPU Seconds: Die Nutzung wird anhand der tatsächlich für Generierungen aufgewendeten Rechenzeit verfolgt, sodass komplexe Renderings mehr kosten als einfache Entwürfe.
  5. Community Loop: Aktive Nutzer können Bonus-GPU-Stunden verdienen, indem sie Bilder in der Galerie bewerten, was hilft, Modelle zu trainieren und gleichzeitig die Community belohnt.
Das Midjourney-Modell ist effektiv, weil es Kosten mit Wert und Ressourcennutzung in Einklang bringt.
  • GPU-time billing bringt Kosten und Ressourcennutzung in Einklang, sodass komplexe Renderings fair im Vergleich zu einfachen Entwürfen verrechnet werden.
  • Relax Mode bietet einen unbegrenzten Fallback, der die Abwanderung reduziert, indem er den Servicezugriff auch nach Erreichen monatlicher Limits sicherstellt.
  • The Fast vs Relax split schafft Anreize für Upgrades, indem er priorisierte Verarbeitung für Nutzer bietet, die Geschwindigkeit und sofortige Ergebnisse schätzen.
  • Extra GPU Hours liefern eine flexible Top-up-Option für Power-User, die mitten im Monat zusätzliche Hochprioritätskapazität benötigen.

Dies mit Dodo Payments aufbauen

Sie können dieses Modell mit Dodo Payments nachbilden, indem Sie Abonnements mit Nutzungsmessern und anwendungsseitiger Logik kombinieren.
1

Create a Usage Meter

Erstellen Sie zunächst einen Meter, um die von jedem Kunden verwendeten GPU-Sekunden zu verfolgen.
  • Meter name: gpu.fast_seconds
  • Aggregation: Summe (addieren Sie die gpu_seconds-Eigenschaft aus jedem Ereignis)
Sie verfolgen nur Ereignisse, bei denen der Generierungsmodus „fast“ ist. Relax-Mode-Generierungen werden für Abrechnungszwecke nicht gemessen.
2

Create Subscription Products with Usage Pricing

Erstellen Sie Ihre Abonnementprodukte und verknüpfen Sie den Nutzungsmesser mit einer freien Schwelle.
ProduktBasispreisKostenlose Schwelle (Sekunden)Überschreitungsrate
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)
Beim Basic-Plan deaktivieren Sie die Overage-Funktion, um eine harte Obergrenze durchzusetzen. Für die anderen Pläne wird der „Relax Mode“ durch Ihre Anwendungslogik gehandhabt, sobald der Meter anzeigt, dass die Schwelle überschritten wurde.
3

Implement Application-Level Relax Mode

Die zentrale Erkenntnis ist, dass Relax Mode kein Abrechnungsmerkmal ist. Es handelt sich um Ihre Anwendung, die Anfragen beim Erreichen der Schwelle durch den Dodo-Nutzungsmesser in eine langsamere Warteschlange umleitet.
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)

Senden Sie nur dann Nutzungsevents an Dodo, wenn eine Generierung im Fast-Modus durchgeführt wird.
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)

Erstellen Sie ein einmaliges Zahlungsprodukt für die „Extra Fast GPU Hour“ zu $4. Wenn ein Kunde dieses kauft, können Sie in Ihrer Anwendung zusätzliche Schwellen oder Guthaben gewähren.
// 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

Erstellen Sie abschließend eine Checkout-Sitzung für den Abonnementplan.
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'
});

Mit dem Time Range Ingestion Blueprint beschleunigen

Der Time Range Ingestion Blueprint vereinfacht die GPU-Zeiterfassung, indem er spezielle Helfer für abrechnungsbasierte Zeitspannen bereitstellt.
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',
  },
});
Das Blueprint kümmert sich um die Dauerumrechnung und das Formatieren von Ereignissen. Sie müssen nur die Kunden-ID und die verstrichene Zeit angeben.
Der Time Range Blueprint unterstützt Millisekunden, Sekunden und Minuten. Siehe die vollständige Blueprint-Dokumentation für alle Daueroptionen und Best Practices.

Die Fast-vs-Relax-Architektur

Das Zwei-Warteschlangen-System funktioniert, indem es Anfragen basierend auf dem aktuellen Nutzungsstatus weiterleitet.
  1. Alle Anfragen laufen über Ihre Anwendung.
  2. Die Anwendung vergleicht den Dodo-Nutzungsmesser mit der freien Schwelle des Plans.
  3. Wenn die Nutzung unter der Schwelle liegt, wird die Anfrage an die Fast-Warteschlange weitergeleitet und gemessen.
  4. Wenn die Nutzung über der Schwelle liegt, wird die Anfrage an die Relax-Warteschlange weitergeleitet, die ungemessen ist und geringere Priorität hat.
  5. Der Basic-Plan hat keinen Relax-Fallback, sodass Anfragen blockiert werden, sobald das Limit erreicht ist.
Relax Mode ist ein anwendungsseitiges Muster, kein Dodo-Abrechnungsmerkmal. Dodo verfolgt Ihre Fast-GPU-Nutzung und informiert Sie, wenn die Schwelle überschritten wird. Ihre Anwendung entscheidet, ob der Nutzer blockiert oder in eine langsamere Warteschlange geleitet wird.

Wichtige verwendete Dodo-Funktionen