用 HTTP 402 给 AI Agent 按量收费:Monetization Gateway Beta 解读

2026-09-30 30 预计阅读时间: 1 分钟
来源: blog.cloudflare.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:9 分钟

AI Agent 正在从“调用内部工具”走向“自主购买外部能力”。当 Agent 消耗模型 Token、查询专业数据,或调用付费 MCP 工具时,传统的订阅页面和人工结算流程很难嵌入自动化工作流。Cloudflare 推出的 Monetization Gateway Beta 尝试用 HTTP 402 Payment Required 把计费要求直接放进请求链路,让程序能够发现价格、完成支付并重试请求。

根据已公布的信息,Cloudflare AI Gateway、Ceramic.ai、Stocktwits 等服务已经在使用 Monetization Gateway,为 Token、API 和 MCP 工具访问收费。目前该产品仍处于封闭测试阶段,美国卖家可以申请参与。

402 为什么适合 Agent 消费场景

常见 API 商业化模式依赖预充值、固定套餐或长期 API Key。这些方式适合人与 SaaS 平台之间的稳定关系,却不一定适合 Agent:一个 Agent 可能只调用某项能力一次,也可能在一次任务中动态选择多个数据源。

HTTP 402 可以把“当前请求需要付费”表示为机器可处理的状态。一个典型流程可以设计成:

  1. Agent 请求受保护的 API 或工具。
  2. 网关返回 402 Payment Required,同时提供价格、计费单位和支付方式。
  3. Agent 或其支付组件判断预算并完成付款。
  4. Agent 携带支付凭证重试请求。
  5. 网关验证凭证,记录消费并转发请求。

这种方式的关键不是状态码本身,而是将报价、付款证明和资源交付组合成一个可自动执行的协议。它尤其适合三类资源:

  • 模型 Token:按输入、输出 Token 或一次推理任务计费。
  • 数据 API:按请求、数据记录、时间范围或数据新鲜度收费。
  • MCP 工具:按工具调用收费,例如搜索、分析、生成报告或执行交易前检查。

需要注意,来源摘要没有给出 Monetization Gateway Beta 的正式请求头、支付凭证格式或配置 API。下面的示例只是一个可以本地运行的 HTTP 402 原型,用于理解服务端和 Agent 的交互方式;接入实际产品时,应替换为 Beta 文档规定的接口。

可运行的 402 付费 API 原型

下面用 FastAPI 模拟一个按次收费的研究数据接口。第一次调用返回 402;客户端携带演示用支付凭证后,接口返回结果。

先安装依赖:

python -m pip install fastapi uvicorn

保存为 app.py:

from fastapi import FastAPI, Header
from fastapi.responses import JSONResponse

app = FastAPI()

PRICE_USD = "0.02"
DEMO_RECEIPT = "paid-demo-receipt"

@app.post("/tools/market-summary")
async def market_summary(
    symbol: str,
    x_payment_receipt: str | None = Header(default=None),
):
    if x_payment_receipt != DEMO_RECEIPT:
        return JSONResponse(
            status_code=402,
            content={
                "error": "payment_required",
                "resource": "market-summary",
                "price": {
                    "amount": PRICE_USD,
                    "currency": "USD",
                    "unit": "request"
                },
                "payment_url": "https://payments.example.test/checkout/demo",
                "retry_with_header": "X-Payment-Receipt"
            },
        )

    return {
        "symbol": symbol.upper(),
        "summary": "Demo data: replace this response with the protected tool output.",
        "charged": {
            "amount": PRICE_USD,
            "currency": "USD"
        }
    }

启动服务:

uvicorn app:app --reload --port 8000

不带支付凭证调用:

curl -i -X POST "http://127.0.0.1:8000/tools/market-summary?symbol=NET"

响应状态将是 402 Payment Required,正文包含本次请求的模拟报价。支付完成后,Agent 可以携带凭证重试:

curl -i -X POST \
  -H "X-Payment-Receipt: paid-demo-receipt" \
  "http://127.0.0.1:8000/tools/market-summary?symbol=NET"

这个例子故意省略了真实支付环节。生产环境绝不能把固定字符串当作付款证明,而应验证由支付系统或 Monetization Gateway 签发的凭证,并检查金额、资源、有效期、收款方和唯一请求标识。

Agent 端不能只看到“付费或拒绝”

要让 Agent 安全地自动消费,调用方还需要明确的预算策略。可以在 Agent 工作流中加入类似下面的判断:

MAX_PRICE_PER_CALL = 0.05

quote = {
    "amount": "0.02",
    "currency": "USD",
    "unit": "request",
}

price = float(quote["amount"])
if quote["currency"] != "USD":
    raise RuntimeError("Unsupported settlement currency")
if price > MAX_PRICE_PER_CALL:
    raise RuntimeError(f"Quote ${price:.2f} exceeds agent budget")

print("Quote accepted; hand off to the configured payment component.")

真实系统还应设置任务总预算、每日限额、允许购买的服务清单,以及需要人工批准的金额阈值。否则,提示注入、循环调用或错误重试都可能变成真实的财务损失。

对 MCP 工具尤其要注意:MCP 描述了模型与工具之间的交互方式,但工具的实际传输和部署结构可能不同。只有当调用链路经过支持计费的 HTTP 服务或网关时,HTTP 402 才能直接参与控制;不要假设所有 MCP 传输方式都会自动理解 402。

上线前应补齐的工程控制

把演示升级为生产服务时,至少要处理以下问题:

  • 报价绑定:付款凭证必须绑定具体资源、价格和请求参数,避免低价凭证被用于高价调用。
  • 防重放:使用 nonce、过期时间或一次性凭证,阻止同一付款证明被重复消费。
  • 幂等性:Agent 超时重试时,不应被重复扣费;写操作还要避免重复执行。
  • 账务记录:保存报价、付款、验证、资源交付和退款记录,便于审计与争议处理。
  • 成本可观测性:同时记录 Agent、租户、工具、模型和任务 ID,才能定位异常消费。
  • 失败语义:明确区分付款失败、凭证无效、余额不足、资源不可用和上游超时。
  • 安全边界:不能因为请求已经付款,就跳过身份验证、授权、速率限制和内容安全检查。

是否值得现在接入

如果你的服务已经向 Agent 出售高价值数据、模型调用或 MCP 工具,HTTP 402 值得尽早做协议层实验。它能把商业规则放入机器可读的请求流程,减少预先签约和人工开通带来的摩擦。

不过,Monetization Gateway 目前仍是封闭 Beta,且现阶段开放申请的是美国卖家。更稳妥的做法是先把内部计量、价格模型、幂等性和预算控制设计好,再根据正式 Beta 文档接入真实的凭证验证与结算流程。这样即使未来更换支付提供方,资源 API 与业务逻辑也不必跟着重写。


相关推荐