近年来,数据要素市场的顶层设计不断推进,围绕数据资产化、数据流通交易、公共数据授权运营等方向,行业讨论越来越多。在近期一次公开发言中,国家数据局局长刘烈宏提出,要围绕国民经济重大场景,研究探索“词元增值订阅”“按效付费”等商业模式。这句话里有几个关键词值得认真拆解:一是“国民经济重大场景”,二是“词元”,三是“增值订阅”,四是“按效付费”。对很多做大数据、AI 应用、数据服务的开发者来说,这不仅是政策信号,更意味着数据服务产品的计价方式、接口设计、计量体系都会迎来新变化。
本文将从技术视角出发,先讲清楚“词元”是什么,再分析数据要素商业化落地时需要哪些技术支撑,最后给出一套可执行的“Token 计量 + 订阅计费 + 按效结算”的后端设计与代码示例,帮助大家在数据服务类项目里提前做好技术储备。文章既适合大数据平台的开发工程师,也适合从事 AI 应用、数据产品设计的同学阅读。
1. 背景与核心概念
1.1 为什么“词元”会被反复提及
“词元”对应的英文术语是 Token,在大模型领域通常翻译为“词元”或“令牌”。它是大语言模型处理文本时的最小语义单元,可以是一个汉字、一个英文单词、一个子词,甚至是一个标点符号。大模型在生成回答时,并不是逐字逐句理解,而是先把输入文本切分成一串 Token,再用这些 Token 进行推理和生成。
Token 之所以重要,是因为它直接决定了成本。目前主流大模型 API 大多按照 Token 数量计费,无论是输入还是输出,最终都会折算成 Token。用户可以这样理解:Token 是 AI 服务的“计量单位”,就像水电煤气按度表计价一样,大模型按 Token 计费。
那么“词元增值订阅”是什么?按照字面意思理解,就是用户按周期订阅一定数量的 Token 配额,获得稳定的模型调用或数据服务能力。这种模式在 API 经济中并不陌生,但把它与“国民经济重大场景”结合起来,就有了更深的含义:未来公共数据、行业数据、大模型服务可能都会以“词元”为计量单位,形成按量付费、按订阅付费、按效果付费等多种商业组合。
1.2 从“数据资源”到“数据产品”的转变
过去很多单位把数据当作一种“资源”存放,最常见的问题是:数据躺在数据库里,没有对外服务能力,也没有清晰的计量方式。要让数据变成可交易、可订阅、可计费的产品,必须解决三个问题:
数据如何封装成服务;
服务如何被计量;
计量结果如何与商业模式对应。
传统的数据 API 通常按调用次数计费,但这种方式无法体现“数据质量”和“模型能力”的差异。同样一次调用,如果返回的是简单查询结果,和返回的是经过大模型分析后生成的结论,价值完全不同。因此“词元增值订阅”和“按效付费”的提出,本质上是在推动一种更精细的数据服务计价模式。
1.3 本文要解决的技术问题
基于上述背景,本文将从工程角度拆解以下问题:
Token 在数据服务中的计量方式是什么;
增值订阅模式需要什么样的技术架构;
按效付费的“效”如何量化;
如何用代码实现一套简单的 Token 计费与订阅系统;
生产环境落地时有哪些坑和最佳实践。
这里需要说明的是,由于“词元增值订阅”“按效付费”仍处于研究与探索阶段,没有统一的国家标准或行业规范,本文给出的方案属于通用工程思路,适合作为技术预研和架构参考,具体落地时需根据业务场景和合规要求调整。
2. 环境准备与版本说明
2.1 技术选型思路
本文的示例会涉及两类核心内容:一是 Token 计量模块,二是订阅与计费模块。这里不依赖特定的大模型厂商 SDK,而是模拟一个数据服务接口,用通用后端技术实现计量、扣费、订阅校验和按效结算。
示例环境如下,版本需要根据你的项目实际情况调整,本文仅演示配置思路:
操作系统:Windows 10/11、macOS、Linux 均可;
编程语言:Python 3.9+;
Web 框架:FastAPI;
数据库:SQLite(演示用,生产建议 PostgreSQL);
缓存:可选 Redis,用于高频计数与配额扣减;
模型服务:示例中使用一个假模型接口,实际可替换为 OpenAI、文心一言、通义千问等任意兼容 API。
之所以选择 FastAPI,是因为它自带 OpenAPI 文档、依赖注入和异步支持,写小示例很直观。真实项目中也可以换成 Spring Boot、Go Gin 等框架,核心逻辑是相通的。
2.2 项目初始化
首先安装依赖:
BASH
复制
1
pip install fastapi uvicorn sqlalchemy pydantic python-jose passlib
如果希望使用 Redis 做计数器,可以追加安装:
本文示例以 SQLite + 内存计数为主,Redis 部分会给出思路性说明。
创建项目目录:
BASH
复制
1
mkdir token-subscription-demo
2
cd token-subscription-demo
最终目录结构如下:
TEXT
复制
1
token-subscription-demo/
2.3 数据库与模型设计
在写代码之前,先设计数据模型。这里需要四张核心表:用户表、订阅套餐表、用户订阅表、Token 计量流水表。如果是生产环境,还需要增加订单表、发票表、效果评估表等,但演示阶段可以精简。
3. 核心原理拆解
3.1 Token 计量原理
Token 计量是整个计费体系的基础。不同大模型厂商的 Token 切分规则不同,比如 OpenAI 使用 BPE(Byte Pair Encoding)分词算法,中文场景下平均一个汉字约等于 1 到 2 个 Token。如果想精确计量,最简单的办法是调用模型服务商提供的 Token 计数接口;如果只想做近似统计,可以用开源分词库。
以 Python 为例,如果直接调用 OpenAI 的 tiktoken 库,可以精确统计 Token 数量:
PYTHON
复制
3
def count_tokens (text: str , model: str = "gpt-4" ) -> int :
4
encoding = tiktoken.encoding_for_model(model)
5
return len (encoding.encode(text))
如果不依赖特定模型 SDK,也可以使用 transformers 库的 AutoTokenizer。但在数据服务场景中,Token 计量不一定要完全等于大模型内部的 Token 数,也可以由平台自定义。比如一个数据接口返回 1 行数据算 10 Token,返回一段 AI 分析算 100 Token,这里的关键在于平台要有统一的计量标准。
3.2 增值订阅模式的技术映射
增值订阅模式的核心是“用户先买额度,再按量消耗”。与传统流量包类似,技术实现上需要解决以下问题:
余额判断:调用接口前检查用户剩余 Token 是否充足;
并发扣减:多个请求同时到达时不能超扣;
配额重置:月包、周包需要周期重置;
计量记录:每笔调用的 Token 消耗都要落流水,方便对账。
3.3 按效付费的“效”如何定义
按效付费比按量付费更复杂。要判断“效果”好不好,必须先定义效果指标。比如:
客服机器人场景:问题解决率是否提升;
文档分析场景:回答准确率是否达标;
营销文案场景:转化率是否提升;
数据查询场景:返回结果是否满足用户需求。
从技术实现看,按效付费可以先按 Token 预扣费,然后根据效果评估结果决定是否退款或调整结算金额。这个流程和担保交易类似,需要增加一个“结算单”状态,效果达标后再确认收入。
4. 完整实战案例
接下来进入本文的核心部分,用代码实现一个简化版“词元订阅 + 按量计费 + 按效结算”的数据服务后端。
4.1 定义数据库模型
先创建 models.py,定义用户、套餐、订阅、流水和结算单表。
PYTHON
复制
2
from sqlalchemy import (
3
Column, Integer, String, Float, DateTime, ForeignKey, Text
5
from sqlalchemy.ext.declarative import declarative_base
6
from sqlalchemy.orm import relationship
7
from sqlalchemy.sql import func
9
Base = declarative_base()
13
__tablename__ = "users"
15
id = Column(Integer, primary_key=True , index=True )
16
username = Column(String(64 ), unique=True , index=True , nullable=False )
17
api_key = Column(String(128 ), unique=True , index=True , nullable=False )
18
created_at = Column(DateTime, server_default=func.now())
20
subscriptions = relationship("Subscription" , back_populates="user" )
21
usages = relationship("TokenUsage" , back_populates="user" )
25
__tablename__ = "plans"
27
id = Column(Integer, primary_key=True , index=True )
28
name = Column(String(64 ), nullable=False )
29
description = Column(Text, nullable=True )
30
token_quota = Column(Integer, nullable=False )
31
price = Column(Float, nullable=False )
32
validity_days = Column(Integer, nullable=False )
33
created_at = Column(DateTime, server_default=func.now())
35
subscriptions = relationship("Subscription" , back_populates="plan" )
38
class Subscription (Base ):
39
__tablename__ = "subscriptions"
41
id = Column(Integer, primary_key=True , index=True )
42
user_id = Column(Integer, ForeignKey("users.id" ), nullable=False )
43
plan_id = Column(Integer, ForeignKey("plans.id" ), nullable=False )
44
total_tokens = Column(Integer, nullable=False )
45
used_tokens = Column(Integer, default=0 )
46
start_time = Column(DateTime, nullable=False )
47
end_time = Column(DateTime, nullable=False )
48
status = Column(String(16 ), default="active" )
50
user = relationship("User" , back_populates="subscriptions" )
51
plan = relationship("Plan" , back_populates="subscriptions" )
54
class TokenUsage (Base ):
55
__tablename__ = "token_usages"
57
id = Column(Integer, primary_key=True , index=True )
58
user_id = Column(Integer, ForeignKey("users.id" ), nullable=False )
59
subscription_id = Column(Integer, ForeignKey("subscriptions.id" ), nullable=False )
60
tokens_used = Column(Integer, nullable=False )
61
request_type = Column(String(32 ), default="chat" )
62
created_at = Column(DateTime, server_default=func.now())
64
user = relationship("User" , back_populates="usages" )
67
class Settlement (Base ):
68
__tablename__ = "settlements"
70
id = Column(Integer, primary_key=True , index=True )
71
user_id = Column(Integer, ForeignKey("users.id" ), nullable=False )
72
usage_id = Column(Integer, ForeignKey("token_usages.id" ), nullable=True )
73
amount = Column(Float, nullable=False )
74
status = Column(String(16 ), default="pending" )
75
effect_score = Column(Float, nullable=True )
76
created_at = Column(DateTime, server_default=func.now())
这里把订阅和 Token 流水分开建模,目的是方便后续出账单和对账。
4.2 实现 Token 计量模块
接下来实现 tokenizer.py,负责统计 Token。生产环境建议接入大模型厂商的 Token 计数接口,这里用字符长度做近似模拟。
PYTHON
复制
3
def estimate_tokens (text: str ) -> int :
6
真实场景建议使用 tiktoken 或模型服务商的官方计数接口。
12
chinese_chars = sum (1 for ch in text if "\u4e00" <= ch <= "\u9fff" )
13
other_chars = len (text) - chinese_chars
14
return int (chinese_chars * 1.5 + other_chars * 0.3 ) + 1
这个模块需要保持幂等,同一个输入永远返回同一个 Token 数,这样可以保证计费结果可追溯。
4.3 实现订阅与扣费逻辑
创建 billing.py,封装订阅校验、Token 扣减和流水记录。
PYTHON
复制
2
from datetime import datetime, timedelta
4
from sqlalchemy.orm import Session
6
from models import Plan, Subscription, TokenUsage, Settlement, User
9
def create_subscription (
14
"""为用户创建订阅,并生成可用额度。"""
15
now = datetime.utcnow()
19
total_tokens=plan.token_quota,
22
end_time=now + timedelta(days=plan.validity_days),
34
subscription: Subscription,
36
request_type: str = "chat"
40
返回 True 表示扣减成功,False 表示余额不足。
42
if subscription.status != "active" :
45
if subscription.end_time < datetime.utcnow():
46
subscription.status = "expired"
50
if subscription.used_tokens + tokens > subscription.total_tokens:
53
subscription.used_tokens += tokens
56
subscription_id=subscription.id ,
58
request_type=request_type,
65
def get_active_subscription (db: Session, user_id: int ) -> Subscription | None :
67
now = datetime.utcnow()
69
db.query(Subscription)
71
Subscription.user_id == user_id,
72
Subscription.status == "active" ,
73
Subscription.start_time <= now,
74
Subscription.end_time >= now,
80
def create_settlement (
88
settlement = Settlement(
93
effect_score=effect_score,
97
db.refresh(settlement)
101
def confirm_settlement (db: Session, settlement_id: int ) -> Settlement:
103
settlement = db.query(Settlement).filter (Settlement.id == settlement_id).first()
105
settlement.status = "confirmed"
107
db.refresh(settlement)
111
def refund_settlement (db: Session, settlement_id: int ) -> Settlement:
113
settlement = db.query(Settlement).filter (Settlement.id == settlement_id).first()
115
settlement.status = "refunded"
117
db.refresh(settlement)
需要注意,真实的并发扣减不能只靠“先查再扣”,需要使用数据库行锁或者 Redis Lua 脚本保证原子性。下面的代码演示了在应用层的常规写法,生产环境需要增加 with_for_update() 或采用 Redis 扣减方案。
4.4 实现数据服务接口
创建主应用 app.py,提供三个核心接口:
POST /api/v1/chat:调用数据服务并扣减 Token;
GET /api/v1/usage:查询用户 Token 用量;
POST /api/v1/settlement:按效结算确认。
PYTHON
复制
2
from fastapi import FastAPI, Depends, HTTPException, Header
3
from pydantic import BaseModel
4
from sqlalchemy import create_engine
5
from sqlalchemy.orm import sessionmaker, Session
7
from models import Base, User, Plan, Subscription, TokenUsage
8
from tokenizer import estimate_tokens
11
get_active_subscription,
17
DATABASE_URL = "sqlite:///./token_subscription.db"
19
engine = create_engine(
21
connect_args={"check_same_thread" : False }
23
SessionLocal = sessionmaker(autocommit=False , autoflush=False , bind=engine)
24
Base.metadata.create_all(bind=engine)
26
app = FastAPI(title="Token Subscription Demo" )
38
db: Session = Depends(get_db ),
39
authorization: str = Header(..., alias="Authorization" )
41
"""通过 API Key 识别用户。"""
42
api_key = authorization.replace("Bearer " , "" )
43
user = db.query(User).filter (User.api_key == api_key).first()
45
raise HTTPException(status_code=401 , detail="Invalid API Key" )
49
class ChatRequest (BaseModel ):
51
data_source: str = "国民经济统计"
54
class ChatResponse (BaseModel ):
60
class SettlementConfirmRequest (BaseModel ):
65
@app.post("/api/v1/chat" , response_model=ChatResponse )
68
user: User = Depends(get_current_user ),
69
db: Session = Depends(get_db ),
73
根据输入查询词消耗 Token,并调用“模型”返回分析结果。
75
subscription = get_active_subscription(db, user.id )
77
raise HTTPException(status_code=400 , detail="没有有效的订阅套餐" )
80
prompt = f"请基于{req.data_source} 数据源,分析以下问题:{req.query} "
81
tokens_needed = estimate_tokens(prompt)
83
if subscription.used_tokens + tokens_needed > subscription.total_tokens:
84
raise HTTPException(status_code=429 , detail="Token 配额不足" )
86
success = consume_tokens(
94
raise HTTPException(status_code=429 , detail="Token 扣减失败" )
97
answer = f"针对“{req.query} ”,系统已完成数据检索与分析。"
98
answer_tokens = estimate_tokens(answer)
111
tokens_used=tokens_needed + answer_tokens,
112
remaining_tokens=subscription.total_tokens - subscription.used_tokens,
116
@app.get("/api/v1/usage" )
118
user: User = Depends(get_current_user ),
119
db: Session = Depends(get_db ),
122
subscription = get_active_subscription(db, user.id )
124
return {"message" : "当前无有效订阅" }
127
"plan_total_tokens" : subscription.total_tokens,
128
"used_tokens" : subscription.used_tokens,
129
"remaining_tokens" : subscription.total_tokens - subscription.used_tokens,
130
"end_time" : subscription.end_time.isoformat(),
134
@app.post("/api/v1/settlement/confirm" )
135
def settlement_confirm (
136
req: SettlementConfirmRequest,
137
user: User = Depends(get_current_user ),
138
db: Session = Depends(get_db ),
142
settlement = confirm_settlement(db, req.settlement_id)
144
settlement = refund_settlement(db, req.settlement_id)
147
raise HTTPException(status_code=404 , detail="结算单不存在" )
150
"settlement_id" : settlement.id ,
151
"status" : settlement.status,
152
"amount" : settlement.amount,
153
"effect_score" : settlement.effect_score,
这里在返回答案时额外扣了一次答案 Token,这是模拟大模型输出计费。实际项目中,输入和输出价格通常是不同的,价格参数应该放入套餐配置中,而不是写死在业务代码里。
4.5 初始化测试数据
为了方便测试,再写一个初始化脚本,插入演示用户和套餐。
PYTHON
复制
2
from datetime import datetime, timedelta
4
from sqlalchemy.orm import Session
6
from models import User, Plan, Subscription, Base
7
from app import engine, SessionLocal
11
Base.metadata.create_all(bind=engine)
14
if db.query(User).count() > 0 :
19
user = User(username="demo_user" , api_key="demo-api-key-001" )
26
description="每月 10 万 Token,适合轻量数据查询" ,
35
now = datetime.utcnow()
39
total_tokens=plan.token_quota,
42
end_time=now + timedelta(days=plan.validity_days),
51
if __name__ == "__main__" :
运行初始化脚本:
4.6 启动服务并验证
启动 FastAPI 服务:
BASH
复制
1
uvicorn app:app --reload --port 8000
打开浏览器访问 http://127.0.0.1:8000/docs,可以看到 Swagger 文档,这是 FastAPI 自带功能。
首先调用初始化接口后,直接调用 POST /api/v1/chat,请求头需要携带:
TEXT
复制
1
Authorization: Bearer demo-api-key-001
请求体示例:
JSON
复制
2
"query" : "2024年新能源汽车销量增长情况如何" ,
3
"data_source" : "国民经济统计"
预期返回结果类似:
JSON
复制
2
"answer" : "针对“2024年新能源汽车销量增长情况如何”,系统已完成数据检索与分析。" ,
4
"remaining_tokens" : 99955
再调用 GET /api/v1/usage,可以查看剩余额度。
4.7 按效付费的模拟演示
按效付费需要结合业务效果评估。这里提供思路性代码,实际落地时,效果评估通常由业务系统完成,并通过回调接口通知计费系统。
返回:
这个流程的核心思想是:先冻结费用,效果达标后入账,不达标则原路退回。这样可以最大程度保护数据消费者的权益,同时激励数据服务提供商提升服务质量。
5. 常见问题与排查思路
5.1 Token 计数不准
问题现象:扣费的 Token 数与模型服务商账单不一致。
常见原因:
使用字符长度估算 Token,而不是大模型服务商的分词算法;
不同模型使用不同的 Tokenizer,同一段文本在不同模型下 Token 数不同;
忽略了系统提示词(System Prompt)的 Token 消耗。
解决思路:
接入 tiktoken 或各厂商提供的 Token 计数接口;
在计量模块中记录模型版本,便于对账;
把系统提示词和上下文历史都纳入计量范围。
5.2 并发情况下额度超扣
问题现象:多个请求同时到达时,剩余额度出现负数。
常见原因:
没有使用数据库行锁或乐观锁;
应用层先查询再更新,中间出现时间窗口。
解决思路:
使用 SQL 原子更新,例如先执行 UPDATE subscriptions SET used_tokens = used_tokens + :add_tokens WHERE id = :id AND used_tokens + :add_tokens <= total_tokens,通过影响行数判断是否扣减成功;
或者使用 Redis 的 DECRBY 和 Lua 脚本保证原子性。
PYTHON
复制
2
from sqlalchemy import update
7
Subscription.id == subscription.id ,
8
Subscription.used_tokens + tokens <= Subscription.total_tokens,
9
Subscription.status == "active" ,
11
.values(used_tokens=Subscription.used_tokens + tokens)
13
if result.rowcount == 0 :
15
raise HTTPException(status_code=429 , detail="Token 配额不足" )
5.3 订阅到期但仍在调用
问题现象:用户订阅过期后,仍然可以调用接口。
常见原因:
接口没有校验 end_time;
定时任务没有把过期订阅批量置为 expired。
解决思路:
在每次扣费前检查订阅有效期;
编写定时任务,每分钟扫描一次 end_time 小于当前时间的订阅,批量更新状态;
在数据库层给 status 和 end_time 建联合索引,提高查询效率。
5.4 按效结算时如何保证公平
问题现象:服务商认为自己提供了高质量结果,但用户认为效果不达标,拒绝确认结算。
解决思路:
在接入时明确效果评估指标,例如准确率、完成率、用户评分;
提供申诉机制,由平台人工介入评审;
引入第三方评估组件,避免单方打分;
初始版本建议先小额结算,积累数据后再调整比例。
6. 最佳实践与工程建议
6.1 计量系统设计原则
Token 计量系统本质上是一个计费系统,必须遵循以下原则:
可追溯:每一笔消耗都能查到对应的请求记录和原始报文;
可对账:计费系统要能按月输出账单,与模型服务商账单核对;
可回放:请求日志要保留足够长时间,方便争议处理;
确定性:同一个输入只能有一个 Token 计量结果,不能因为并发、重试产生不同结果。
6.2 配额扣减的原子性
前面已经提过,生产环境禁止使用“先查询再更新”的方式扣减配额。建议使用 Redis 管道或 Lua 脚本完成扣减。这里给一个 Redis 扣减的参考思路:
用户购买套餐后,把配额写入 Redis,Key 为 subscription:{sub_id}:tokens;
请求进入时,执行 DECRBY 命令扣减;
如果扣减后为负数,则回滚并返回配额不足;
异步任务把 Redis 中的消费记录批量同步到 PostgreSQL。
这种设计能支撑较高并发,但会引入 Redis 与数据库一致性的问题,需要根据业务量权衡。
6.3 订阅套餐的扩展设计
“词元增值订阅”的商业模式不会停留在单一维度,未来的套餐设计可能包含以下维度:
Token 数量:基础计费因子;
数据源范围:不同类型的公共数据价格不同;
模型等级:普通模型、专业模型、专家模型价格递增;
服务等级:标准并发、高并发、专属资源池;
效果承诺:例如响应准确率达到 90% 以上才计费。
建议在套餐表中预留 config_json 字段,存放扩展属性。
PYTHON
复制
2
__tablename__ = "plans"
4
id = Column(Integer, primary_key=True , index=True )
5
name = Column(String(64 ), nullable=False )
7
config_json = Column(Text, nullable=True )
6.4 安全与合规注意事项
数据服务涉及数据要素流通,必须高度重视安全合规:
数据脱敏:对外服务的数据必须经过脱敏处理,防止敏感信息泄露;
权限管控:API Key 要支持创建多个、独立权限、随时吊销;
审计日志:记录每次调用的用户、时间、数据源、Token 消耗,保留 180 天以上;
访问限流:单用户每秒最多调用次数要有限制,防止恶意刷量;
国密改造:涉及政务数据、公共数据时,优先考虑国密算法进行传输加密和签名。
以上内容需要结合具体业务和监管要求进一步完善,本文不再展开。
6.5 生产环境变更流程
如果在生产环境接入 Token 计费系统,建议遵循以下变更流程:
先在测试环境完整跑通计量、扣费、对账流程;
先发布后端计量模块,再开启前端订阅入口;
采用灰度发布,先给内部员工或少量种子用户开放订阅功能;
对比预估消费与实际消费,确认计费准确后再全量开放;
每次变更前备份数据库,并保留回滚方案。
7. 总结与学习路线
本文围绕国家数据局局长刘烈宏提出的“词元增值订阅、按效付费”商业模式,从数据要素市场的政策背景出发,详细拆解了 Token 计量、订阅管理、按量扣费、按效结算的技术实现方案,并给出了完整的 FastAPI 示例代码。
通过这篇文章,你应该掌握了以下关键点:
Token 是数据服务计费的核心计量单位;
增值订阅需要配额、有效期、状态管理的支撑;
按效付费需要引入结算单机制,效果达标确认,效果不达标退款;
并发扣减必须使用原子操作,不能先查后扣;
生产环境需要重点关注对账、审计、安全合规和灰度发布。
接下来你可以继续深入学习的内容包括:
大模型 Tokenizer 的实现原理,例如 BPE 算法;
稳定币、支付网关、订单系统的完整设计;
数据资产入表的数据治理流程;
数据交易所在公共数据授权运营中的技术方案;
基于流式计算的实时用量统计系统。
在实际项目中,建议优先关注以下风险:Token 计量口径不一致、并发扣减超卖、按效评估争议、数据合规风险。这几类问题一旦在生产环境暴露,往往会影响商誉甚至引发合规问题。
如果这篇文章对你有帮助,建议先收藏起来,后续做数据服务或 AI 应用时,可以随时作为参考。也欢迎在实际项目中尝试把“词元订阅”和“按效付费”结合起来设计,形成一套适合自己业务场景的计费模型。