# 如何构建按需付费的 AI SaaS

> 介绍如何构建基于消费量的 AI 产品的架构指南，涵盖用量追踪、计费集成、定价策略，以及如何使用 Dodo Payments 实现按使用量付费。
- **Author**: Ayush Agarwal
- **Published**: 2026-03-26
- **Category**: Payments, AI, SaaS
- **URL**: https://dodopayments.com/blogs/zh/pay-as-you-go-ai-saas

---

"无限"AI 时代即将结束。OpenAI 最初推出 ChatGPT 时，每月 20 美元的固定费用让人觉得非常划算。但随着模型的运行成本不断上升，推理成本在每次请求中的占比越来越高，整个行业开始发生转变。OpenAI、Anthropic 和 Google 都已开始为其 API 产品采用基于用量的模式。对于现代 AI SaaS 创业者来说，问题已经不是是否要按用量收费，而是如何构建能够支持这种模式的基础设施。

构建按需付费（PAYG）系统，与构建标准订阅应用有着本质区别。你不只是检查数据库中用户是否拥有有效标记，而是要实时追踪每个 token、每次图像生成和每次 API 调用。你需要管理预付额度、处理超额用量，并确保收入能够随着计算成本同步增长。

本指南将介绍如何构建可用于生产环境的 PAYG AI SaaS，包括其架构、实现方式和策略。我们将了解如何让收入与成本保持一致、防止滥用，以及如何使用 Dodo Payments 实现完整流程。

## 为什么按需付费适合 AI SaaS

AI 产品具有独特的成本结构。传统 CRUD 应用中，新增一个用户的边际成本接近于零；而 AI 产品的每次请求都会产生实际的 GPU 时间和 API 费用。一个使用无限套餐的"重度用户"，其成本很容易超过订阅费用。

> 基于用量的计费不只是一种定价模式，更是一项产品决策。当客户为实际用量付费时，你就必须打造一个值得他们每天使用的产品。
>
> \- Ayush Agarwal，Dodo Payments 联合创始人兼 CPTO

### 1. 让收入与成本保持一致

PAYG 最明显的优势是能够保护你的利润率。如果用户生成了 10,000 张图片，就为 10,000 张图片付费；如果只生成 10 张，就为 10 张付费。对于[采用 AI 原生模式的初创公司中的自适应定价](https://dodopayments.com/blogs/adaptive-pricing-ai-native-startups)而言，这种一致性至关重要，因为模型成本可能不断波动。你不再需要在定价时猜测"平均"用户会消耗多少资源。

### 2. 降低入门门槛

固定费用会带来心理门槛。如果用户只需要你的工具完成一个项目，他们可能不愿意承诺每月支付 50 美元。PAYG 允许用户从小额消费开始。他们可以花 5 美元试用你的产品，发现价值后，消费金额自然会增加。这是注重产品驱动增长的 [AI 定价模式](https://dodopayments.com/blogs/ai-pricing-models)的核心部分。

### 3. 防止滥用并实现公平使用

无限套餐会吸引机器人和爬虫。为每项操作附加成本，可以自然地降低滥用动机，也能让产品对所有用户群体更加公平。轻度用户不会觉得自己在补贴重度用户，重度用户也能获得所需的规模，而不必受到那些会导致[订阅疲劳](https://dodopayments.com/blogs/subscription-fatigue)的武断"公平使用"上限限制。

## 基于用量的 AI 应用架构

要构建 PAYG 系统，你需要四个协同工作的主要组件：API 层、用量追踪系统、计费集成和客户仪表板。

```mermaid
flowchart TD
    User[User / Client] --> API[API Gateway / Middleware]
    API --> AI[AI Model / Inference]
    API --> Tracker[Usage Tracker]
    Tracker --> DB[(Usage Database)]
    Tracker --> Dodo[Dodo Payments API]
    Dodo --> Webhook[Webhook Handler]
    Webhook --> DB
    User --> Dashboard[Customer Dashboard]
    Dashboard --> DB
```

### API 层

API 层是守门人。在允许请求继续处理之前，它需要验证用户是否拥有足够的预付额度或有效的支付方式。在 PAYG 模式中，这通常意味着通过中间件检查用户余额的本地缓存。

### 用量追踪

这是整个系统的核心。每当 AI 模型返回响应时，你都需要记录消耗情况。对于 LLM，通常记录 token 总数（提示词 + 补全内容）；对于图像生成器，则记录图像数量和分辨率。这些数据需要被导入计费系统。

### 计费集成

计费系统负责将原始用量转换为金额。它通过聚合事件、应用分层定价和生成发票，来处理 [SaaS 的基于用量计费](https://dodopayments.com/blogs/usage-based-billing-saas)。使用像 Dodo Payments 这样的[面向 AI 的名义商户](https://dodopayments.com/blogs/merchant-of-record-ai)，可以自动处理全球税务合规和支付处理，从而简化这一流程。

### 客户仪表板

透明度是打造良好[包含用量上限和提醒的计费 UX](https://dodopayments.com/blogs/billing-ux-usage-caps-alerts)的关键。用户需要清楚看到自己的消费金额、剩余预付额度，以及一段时间内的用量明细。

## 第 1 步：设计你的消费单位

在编写任何代码之前，你必须定义收费对象。AI SaaS 中常见的计费单位包括：

- **Tokens**：LLM 的标准计费单位。你可以对输入 token 和输出 token 采用不同费率。
- **生成次数**：每创建一张图片、一段视频或一个音频文件收取固定费用。
- **API 调用次数**：对服务请求次数进行简单计数。
- **计算时间**：根据 GPU 为特定任务运行的秒数或分钟数计费。

大多数成功的 AI 公司都会使用"预付额度"系统。用户购买或获赠预付额度，不同操作消耗不同数量的预付额度。这可以将不断变化的模型成本抽象掉，避免用户直接面对复杂性。例如，一次 GPT-4o 请求可能消耗 50 个预付额度，而一次 GPT-3.5 请求消耗 5 个。

## 第 2 步：设置按用量计费的产品

在 Dodo Payments 中，你需要创建一个采用[基于用量计费](https://docs.dodopayments.com/features/usage-based-billing/introduction)的产品。你需要定义一个"计量器（Meter）"，告诉系统如何聚合你发送的事件。

对于 AI SaaS，你可以创建一个名为 `ai_tokens` 的计量器，并根据 `tokens_used` 元数据字段使用 `sum` 聚合方式。然后，将该计量器关联到产品，并设置单位价格（例如每 1,000 个 token 收费 0.01 美元）。

## 第 3 步：实现用量追踪中间件

你需要一种可靠的方式来追踪用量，同时不能显著增加请求延迟。一种常见模式是使用中间件拦截 AI 服务商的响应，计算用量，然后将其发送到后台任务中进行导入。

下面是使用 Express 和 Node.js 的示例：

```javascript
import DodoPayments from "dodopayments";
const dodo = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
});

async function usageMiddleware(req, res, next) {
  const originalSend = res.send;

  res.send = function (body) {
    const responseData = JSON.parse(body);

    // 从 AI 服务商的响应中提取用量
    const tokensUsed = responseData.usage?.total_tokens || 0;
    const customerId = req.user.dodo_customer_id;

    if (tokensUsed > 0) {
      // 在后台将用量事件导入 Dodo
      trackUsage(customerId, tokensUsed).catch(console.error);
    }

    return originalSend.apply(res, arguments);
  };

  next();
}

async function trackUsage(customerId, tokens) {
  await dodo.usageEvents.ingest({
    events: [
      {
        event_id: `usage_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
        customer_id: customerId,
        event_name: "ai_token_usage",
        timestamp: new Date().toISOString(),
        metadata: {
          tokens_used: tokens.toString(),
        },
      },
    ],
  });
}
```

该中间件可确保追踪每个成功请求。使用唯一的 `event_id` 对实现幂等性至关重要，可以避免网络错误导致重试时重复计费。

## 第 4 步：导入事件并管理预付额度

虽然纯 PAYG（在月底计费）很常见，但许多 AI 初创公司更喜欢[预付费计费](https://docs.dodopayments.com/features/credit-based-billing)。在这种模式下，用户会提前购买一定余额的预付额度。

当你[实现基于用量的计费](https://dodopayments.com/blogs/implement-usage-based-billing)时，可以将计量器关联到这些预付额度余额。随着事件不断传入，Dodo Payments 会自动从用户的预付额度余额中扣除相应额度。如果余额归零，你可以停止服务，或者允许"超额用量"，并在计费周期结束时收取费用。

```javascript
// 示例：导入一批用量事件
async function batchIngestUsage(events) {
  try {
    const response = await dodo.usageEvents.ingest({
      events: events.map((e) => ({
        event_id: e.id,
        customer_id: e.customerId,
        event_name: "token_consumption",
        timestamp: e.timestamp,
        metadata: {
          model: e.model,
          tokens: e.tokens.toString(),
        },
      })),
    });
    console.log(`Successfully ingested ${response.processed_events} events`);
  } catch (error) {
    console.error("Failed to ingest usage events:", error);
  }
}
```

## 第 5 步：构建用量仪表板

用户最不喜欢的就是账单惊喜。透明的仪表板是建立信任的最佳方式。你应该展示：

- **当前余额**：剩余的预付额度。
- **用量历史**：显示过去 30 天消费情况的图表。
- **主要用量来源**：哪些项目或 API 密钥消耗了最多资源。

你可以使用 Dodo Payments 的 [SDK](https://docs.dodopayments.com/developer-resources/dodo-payments-sdks)获取客户用量数据，并将其显示在前端。

```javascript
// 获取仪表板所需的用量数据
const usage = await dodo.usageEvents.list({
  customer_id: "cus_abc123",
  start: "2024-03-01T00:00:00Z",
  end: "2024-03-31T23:59:59Z",
});
```

## 第 6 步：使用 Webhook 处理计费事件

你的应用需要对计费变化做出响应。例如，当用户的预付额度余额较低时，你可能希望发送邮件或触发自动充值。当支付失败时，你需要限制访问权限。

Dodo Payments 为这些事件提供了 [Webhook](https://docs.dodopayments.com/developer-resources/webhooks)。

```javascript
// Express Webhook 处理程序
app.post("/webhooks/dodo", async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case "credit.balance_low":
      await notifyUserLowBalance(
        event.data.customer_id,
        event.data.available_balance,
      );
      break;
    case "subscription.on_hold":
      // 续费失败且订阅被暂停时触发
      await restrictAccess(event.data.customer_id);
      break;
    case "credit.added":
      await logCreditGrant(event.data);
      break;
  }

  res.sendStatus(200);
});
```

## AI SaaS 定价的进阶策略

完成基础设施建设后，你就可以开始优化[基于用量的定价示例](https://dodopayments.com/blogs/usage-based-pricing-examples)，以最大化收入和用户满意度。

### 免费层策略

一个常见错误是提供"无限量"免费试用。更好的做法是在用户注册时提供固定数量的免费预付额度。这样既能让用户探索产品，又能控制你的成本。你甚至可以设置每月定期发放免费预付额度，持续吸引用户回来。

### 预付费与后付费

- **预付费**：用户提前购买预付额度。这有利于现金流，也能消除无法收款的风险，是 [API 变现](https://dodopayments.com/blogs/api-monetization)的标准模式。
- **后付费**：用户先使用服务，再根据消费量在月底计费。这对偏好开具发票的企业客户来说更加方便。

Dodo Payments 同时支持这两种模式，让你可以为不同客户群体提供最合适的方案。

### 处理突发用量

AI 用量可能出现峰值。用户可能运行一个大型批处理任务，在几小时内消耗数千美元的计算资源。为了保护自己，你可以实施"软"限制和"硬"限制。软限制会触发通知；硬限制则会暂停账户，直到支付得到验证或完成人工审核。

## 总结

构建按需付费的 AI SaaS 是一项技术挑战，但也是当前市场中最可持续的增长方式。让收入与成本保持一致，可以打造出能够抵御模型价格变化、并吸引广泛用户群体的业务。

使用 [Dodo Payments](https://dodopayments.com) 这样的平台，你可以专注于 AI 模型，而由计费基础设施负责处理用量追踪、预付额度管理和全球支付等复杂工作。

## 常见问题

### 如何在同一个计量器中处理不同模型的 token？

你可以使用元数据来区分不同模型。例如，发送一个包含 `model: "gpt-4"` 的事件，以及另一个包含 `model: "gpt-3.5"` 的事件。在 Dodo 中，你可以设置不同的计量器；如果使用的是不同模型对应不同预付额度成本的预付费计费系统，也可以使用带乘数的单一计量器。

### 如果用量事件导入失败，会发生什么？

你应该在追踪代码中实现带指数退避的重试机制。Dodo 的导入 API 专为高可用性而设计，但网络问题始终可能发生。务必使用唯一的 `event_id`，以确保重试不会导致重复扣费。

### 我可以提供包含基于用量计费部分的订阅吗？

可以。这通常称为"混合"模式。你收取基础月费，其中包含一定数量的预付额度，然后对超出部分的用量收费。这种模式既能提供可预测的经常性收入，又能从重度用户身上获得额外收益。你可以在我们的[订阅与基于用量计费](https://dodopayments.com/blogs/subscriptions-usage-based-billing-saas)指南中了解更多信息。

### 如何防止用户产生自己无力支付的巨额账单？

对于后付费模式，你应该实施实时监控并设置用量阈值。如果用户尚未计费的用量超过特定金额，可以触发临时付款或暂停账户。对于预付费模式，预付额度余额本身就会起到硬性上限的作用。

### 对于 AI，按需付费比固定费率订阅更好吗？

对于大多数 AI 产品来说，是的。由于推理成本较高，固定费率存在风险。PAYG 可以确保你不会因为某个用户而亏损。不过，对于成本很低或可预测的产品，固定费率可能更容易让用户理解。我们在[AI SaaS 的基于用量计费与固定费用对比](https://dodopayments.com/blogs/usage-based-billing-vs-flat-fees-ai-saas)一文中对此进行了深入比较。

---

准备好构建你的 AI SaaS 了吗？立即[开始使用 Dodo Payments](https://dodopayments.com)，在几分钟内实现世界级计费。查看我们的[定价](https://dodopayments.com/pricing)，了解我们如何帮助你实现全球规模化发展。
---
- [More Payments articles](https://dodopayments.com/blogs/category/payments)
- [All articles](https://dodopayments.com/blogs)