本教程提供了一个完整的工作应用,包括后端和前端。聊天应用使用 Google 的 Gemini AI,并自动跟踪令牌使用,无需手动计数。
- 使用 Google Gemini(AI SDK)驱动 AI 对话
- 自动跟踪令牌使用(无需手动代码)
- 根据实际令牌消耗向客户收费
- 包含一个美观的聊天界面

我们要构建的内容
让我们先了解一下我们的 AI 聊天服务:- 服务:使用 Google Gemini(AI SDK)的 AI 驱动聊天
- 定价模型:按令牌计费(每 1,000 个令牌 $0.01)
- 免费层:每位客户每月 10,000 个免费令牌
- 功能:对话历史、自动令牌跟踪
在开始之前,请确保您拥有:
- 一个 Dodo Payments 账户
- 一个 Google AI API 密钥(从 aistudio 获取)
- 安装 Node.js v16+
第 1 步:创建您的使用计量器
我们将首先在您的 Dodo Payments 仪表板中创建一个计量器,以跟踪 AI 令牌使用情况。1
打开计量器部分
- 登录到您的 Dodo Payments 仪表板
- 点击左侧边栏中的产品
- 点击 计量器
- 点击 创建计量器 按钮

2
填写基本计量器信息
现在我们将输入 AI 聊天服务的具体细节:计量器名称 →
AI Token Usage Meter描述 → Tracks token consumption from AI chat conversations using AI SDK事件名称 → ai_chat_usage3
配置我们如何计数令牌
设置聚合(计量器如何计算我们的事件):聚合类型:从下拉菜单中选择 总和聚合范围:输入 →
totalTokens测量单位:输入 → tokens我们使用 “总和” 是因为我们想要汇总多个聊天消息中消耗的所有令牌。SDK 会在每个事件中自动发送
totalTokens。4
创建您的计量器
- 仔细检查所有设置是否与上述值匹配
- 点击 创建计量器

计量器创建成功! 您的 “AI 令牌使用计量器” 现在可以开始计数令牌。接下来,我们将其连接到计费产品。
第 2 步:获取您的 API 密钥
在我们构建应用之前,让我们收集所需的 API 密钥。1
获取 Dodo Payments API 密钥
- 在您的 Dodo Payments 仪表板中,转到 开发者 → API 密钥
- 点击 创建 API 密钥
- 复制 API 密钥 - 它的格式类似于
test_abc123...
保存此 API 密钥 - 我们稍后将其添加到
.env 文件中。2
获取 Google AI API 密钥
- 访问 aistudio.google.com
- 点击 获取 API 密钥
- 创建一个新的 API 密钥或使用现有的
- 复制密钥
妥善保管此密钥 - 我们也将其添加到
.env 文件中。第 3 步:创建您的计费产品
现在我们需要创建一个定义我们定价的产品(每 1,000 个令牌 $0.01,包含 10,000 个免费令牌)。这将我们的计量器与实际计费连接起来。1
导航到产品
- 在您的 Dodo Payments 仪表板中,点击左侧边栏中的 产品
- 点击 创建产品
- 选择 基于使用的 作为产品类型
2
输入产品详细信息
填写所需的详细信息:产品名称:→
AI Chat Service描述:→ AI-powered chat service with automatic token-based billing产品图片:上传相关图片这些将出现在客户发票上,因此请确保它们清晰且专业。
3
连接您的计量器
在连接您的计量器之前,请确保您已选择 基于使用的计费 作为产品的价格类型。此外,将 固定价格 设置为
0,以确保客户仅根据其使用情况收费,而没有基础费用。现在,链接您刚刚创建的计量器:- 向下滚动到 关联计量器 部分
- 点击 添加计量器
- 从下拉菜单中选择 “AI 令牌使用计量器”(您之前创建的那个)
- 确认它出现在您的产品配置中
您的计量器现在已成功连接到此产品。
4
设置您的定价
在这里我们定义我们的商业模型:每单位价格:输入 → 
0.00001(这是每 1,000 个令牌 0.00001)免费阈值:输入 → 10000(客户每月获得 10,000 个免费令牌)
5
保存您的产品
- 审查所有设置:
- 名称:AI 聊天服务
- 计量器:AI 令牌使用计量器
- 价格:每 1,000 个令牌 $0.01
- 免费层:10,000 个令牌
- 点击 保存更改
产品创建成功! 您的计费现已配置。客户将根据其令牌使用情况自动收费。
第 4 步:进行测试购买
在我们开始构建应用之前,让我们通过进行购买来创建一个测试客户。1
获取您的支付链接
- 在您的 Dodo Payments 仪表板中,转到 产品
- 找到您的 “AI 聊天服务” 产品
- 点击产品旁边的 分享 按钮
- 复制出现的支付链接
2
完成测试购买
- 在新浏览器标签中打开支付链接
- 输入测试支付详细信息并完成购买
成功付款后,您将获得一个客户 ID,我们将在应用代码中使用它。
3
查找您的客户 ID
- 返回到您的 Dodo Payments 仪表板
- 在左侧边栏中导航到 销售 -> 客户
- 找到您刚刚创建的客户(使用测试电子邮件)
- 复制客户 ID - 它的格式类似于
cus_123
保存此客户 ID - 我们将在测试聊天应用时使用它。
第 5 步:构建聊天应用
现在我们已经完成了计费设置并创建了测试客户。让我们构建具有自动令牌跟踪的 AI 聊天应用。1
设置您的项目
创建一个新目录并初始化项目:
2
安装依赖项
安装我们需要的包:
3
配置 TypeScript
创建 更新
tsconfig.json:tsconfig.json
package.json 以添加模块类型和脚本:package.json
4
创建项目结构
创建文件夹和文件:
5
设置环境变量
在项目根目录中创建 用您在第 2 步中获得的实际 API 密钥替换占位符值。
.env 文件:.env
6
创建后端服务器
创建
src/server.ts 并复制此完整的服务器代码:第 6 步:添加聊天界面
现在让我们添加一个美观的聊天界面,具有完整的对话历史!创建public/index.html:
public/index.html
第 7 步:测试您的聊天应用
是时候测试我们的 AI 聊天应用并查看计费的实际效果了!让我们确保一切正常工作。1
启动服务器
首先,确保一切都已设置:您应该会看到:
- 验证您的
.env文件中包含第 2 步中的所有 API 密钥 - 启动开发服务器:
服务器正在运行!是时候聊天了。
2
打开聊天界面
- 打开您的浏览器
- 导航到
http://localhost:3000 - 您应该会看到美观的聊天界面
确保您在
server.ts 中更新 CUSTOMER_ID,以使用您在第 4 步中获得的实际测试客户 ID。3
进行第一次对话
让我们测试一下!尝试这些消息:
- “什么是人工智能?”
- “机器学习是如何工作的?”
- “你能解释神经网络吗?”
如果您看到 AI 响应并且令牌计数出现,您的应用正在正常工作!
4
检查您的 Dodo Payments 仪表板
现在让我们验证事件是否被接收:
- 打开您的 Dodo Payments 仪表板
- 转到 使用计费 → AI 令牌使用计量器
- 点击 事件 标签
- 您应该会看到列出的聊天事件
- 事件名称:
ai_chat_usage - 客户 ID:您的测试客户 ID

您应该会看到每条您发送的消息都有一个事件!
5
验证令牌计数
让我们再发送一些消息,检查令牌聚合是否正常工作:
- 在您的计量器中,转到 客户 标签
- 找到您的测试客户
- 检查 “消耗单位” 列 - 它应该显示总共使用的令牌

计量器正在自动汇总所有
totalTokens 值!6
测试免费层
让我们使用足够的令牌来超过免费层:
- 进行几次对话(目标是 ~15,000+ 总令牌)
- 再次检查您在计量器仪表板中的 客户 标签
- 您现在应该看到:
- 消耗单位:15,000+ 令牌
- 可收费单位:5,000(应用了 10,000 个免费令牌)
- 总价格: ~$0.05

成功! 您的基于使用的计费工作正常。客户将根据其实际令牌消耗自动收费。
故障排除
常见问题及其解决方案:仪表板中未出现事件
仪表板中未出现事件
可能的原因:
- 事件名称与计量器配置不完全匹配
- 客户 ID 在您的账户中不存在
- API 密钥无效或已过期
- 网络连接问题
- 验证事件名称与计量器配置完全匹配(区分大小写:
ai_chat_usage) - 检查客户 ID 是否存在于 Dodo Payments 仪表板中
- 使用简单的 API 调用测试 API 密钥
- 检查服务器日志中的错误消息
令牌计数显示为零
令牌计数显示为零
可能的原因:
- 模型未返回使用信息
- SDK 版本不正确
- 测试模型是否返回使用情况:
- 更新到最新的 Blueprints SDK:
npm install @dodopayments/ingestion-blueprints@latest
API 密钥无效错误
API 密钥无效错误
可能的原因:
- 环境的 API 密钥错误
.env文件中有多余的空格或引号
- 确保测试密钥以
test_开头,实时密钥以live_开头 - 删除
.env文件中密钥周围的引号 - 如有需要,生成新密钥