跳转到内容
v0.8.4正式版

版本化定价与 Project/Token Guard

成本治理不是一个总预算开关。Halro 按下面的顺序回答四个不同问题:

  1. Price Version:这次 Attempt 应按什么规则计价;
  2. Project:这个业务边界今天和此刻还能不能发请求;
  3. Token Guard:这次请求或近期行为是否超过固定阈值、偏离正常基线;
  4. Run 预算:一次完整业务执行的生命周期成本是否还有余额。

前三项适用于稳定版能力;Run 预算属于 v0.7 预览。它们共同生效,任一项拒绝都不能靠放宽另一项 绕过。

每个 Deployment 在承接成本治理流量前,至少需要一个已经生效的 Price Version。核价时先固定 Provider、上游目标、Region、Tier、币种和价目生效时间;只看营销模型名容易把另一个区域、批量层级 或缓存价格套进来。

按上游合同选择计价项:

一、先建立可信价格
控制台单位常见用途
输入USD / 1M tokens普通输入 Token
缓存输入USD / 1M tokensProvider 明确报告的缓存读取输入
输出USD / 1M tokens普通输出及 Provider 规则覆盖的推理 Token
每请求固定USD / request媒体、Rerank、资源操作或合同固定费

不能确认价格时保持“未设置”,不要填零。只有确实无需付费时选择 free;它仍会生成 Price Version, 使“已知零成本”和“未知成本”保持可区分。

在创建前记录来源类型和可复核说明。官方公开价、合同价、内部成本价和临时估算不是同一种保证; 管理员仍要确认模型、Region、Tier、缓存规则和计量单位匹配。确认页的示例金额用于发现百万 Token、 每请求固定费或小数位误填,不能替代独立复算。

每次 Attempt 在调用 Provider 前绑定当时的完整价格快照。之后创建新价格版本不会重算历史 Attempt, 因此月末看到旧请求沿用旧价是正确行为。

立即生效、计划生效与分时价位

Section titled “立即生效、计划生效与分时价位”
  • 立即生效的版本不能删除;后续调价通过创建更晚的新版本覆盖;
  • 计划版本在生效前可以取消;新计划时间必须晚于所有尚未取消的计划版本;
  • 已存在未来版本时,不能再插入一个更早的“立即生效”版本,应先取消阻挡版本或把新版本排到其后;
  • 分时价位使用 Provider 自己的 IANA 时区,与 Project 的 Accounting 时区无关;跨午夜时段拆成两段;
  • 时段未覆盖的时间使用版本的基础费率,不能把空档解释成免费。

恢复旧备份后,如果计划价格在停机期间已经越过生效时间,Deployment 会进入 pricing quarantine。 管理员核对时间线并确认恢复价格前,不应让它重新承接流量。

Project 是预算、限流、可用模型和安全策略的共同归属。建议一个 Project 对应一个可以独立回答 “谁负责、预算多少、允许访问什么”的业务边界。

二、用 Project 建立确定性边界
设置保护的风险设定方法
Allowed Models调用错误环境或未批准模型只选择该 Project 需要的公开 Route 别名
Daily Budget自然日累计费用失控按正常日均、峰值和停机策略设定,不把预算当告警
RPM / TPM重试风暴或输入量突增从真实峰值加有理由的余量,不设无界缓冲
最大并发上游和本机资源被占满与应用并发、Deployment 并发和 Provider 配额一起计算
输入/输出 Token 上限单请求最坏费用过大根据业务最长输入和可接受回答长度设定
请求大小/流时长图片、长流占用资源结合编码膨胀、客户端超时和 Gateway 总超时设定
Allowed CIDRsKey 被其他网络使用限定到真实应用出口或受控网段

Daily Budget 按实例 Accounting 时区的自然日执行;它可能是 23、24 或 25 小时。时区变更在当前周期 结束后生效,不重算历史费用,也不改变 Price Version、Usage export 或审计记录使用的 UTC 时间。

应用每次请求仍应显式设置合理的输出上限。结果不明确时,Halro 可能按允许的最大输出做保守估算; Project 输出上限和请求字段共同决定这个最坏上界。

Token Guard 绑定到 Project,但不代替 Project 的 RPM、TPM、并发或日预算。先在 安全策略 创建 策略并使用模拟功能检查样本,再绑定 Project。

固定阈值包括:

  • 单请求 Token;
  • 每分钟 Token 和成本;
  • 并发;
  • 错误率及其最小样本数;
  • 每分钟唯一来源 IP。

动作分三档:

三、用 Token Guard 处理异常行为
动作作用推荐阶段
observe初始固定阈值命中只记录;价格或策略版本变化后的成本复核仍可能失败关闭建立正常基线,并观察复核拒绝
alert初始固定阈值命中会记录并投递告警;价格或策略版本变化后的成本复核仍可能失败关闭验证阈值、告警链路和复核拒绝处置
temporary_block满足违规次数后临时封禁误报和解除流程均已验收后

临时封禁还要设置触发前违规次数、封禁 TTL 和冷却时间。管理员可以在 Project 页面手动解除,但解除 不是修复根因;应先确认是流量异常、客户端重试、Key 泄漏还是阈值不合理。

EWMA 用于发现相对历史基线的异常。先保证绝对 RPM、TPM、单请求 Token 和成本阈值存在,再开启 EWMA,并为热身、评估窗口、最小样本和冷却留出真实流量。当前 EWMA 只做相对检测和告警,不能把它 当作自动封禁边界。

四、需要业务执行边界时再加 Run 预算

Section titled “四、需要业务执行边界时再加 Run 预算”

v0.7 Run 预算限制一次完整业务执行,而 Project 日预算限制整个业务边界。一次 Run 内的客户端请求、 Provider retry 和 fallback 都消耗同一 Run 余额;同一 Work Unit 重新执行时创建新 Run。

Halro 在 Provider I/O 前原子检查 Project 日预算和 Run 的 committed + reserved + pending。Run 余额 不足时不会自动关闭 Run;应用可以改成仍在余额内的请求,或按业务策略关闭。未知价格无法进行 Run 预算准入,即使实例允许普通请求在未知价格下继续,附加到 Run 的请求仍会拒绝。

完整生命周期和 Key Scope 见接入运行治理

  1. 核价:由 FinOps 或合同责任人确认目标身份、单位、缓存规则和生效时间;
  2. Project 硬边界:先设置 Allowed Models、输出上限、预算、RPM、TPM 和并发;
  3. 观察:Token Guard 使用 observe,覆盖正常峰谷和发布日,同时验证价格或策略变化触发的 成本复核拒绝;
  4. 告警:切到 alert,验证收件人、去重、失败重试、处置时限和复核拒绝路径;
  5. 临时封禁:只对高置信固定阈值启用,并演练自动恢复和管理员解除;
  6. Run 预算:在真实业务试点确认 Work Unit/Run 边界后启用,不从 HTTP 请求粒度机械推导。
六、验收矩阵
场景预期结果
Deployment 没有生效价格在 Provider I/O 前拒绝,不显示成 $0.00
明确 freeAttempt 成本为已知零,并保留 free 价格快照
创建新价格版本新 Attempt 使用新快照,旧 Attempt 金额不变
计划版本尚未到时当前版本继续生效;到点后新请求使用计划版本
Project 日预算不足请求在 Provider I/O 前拒绝,盲目重试无效
Token Guard 为 observe初始固定阈值命中只记录;若 Attempt 成本上升或策略版本改变,复核仍可返回 token_guard_blocked
临时封禁触发后续请求明确拒绝;TTL 或管理员处置后恢复
Run 余额不足Project 仍可能有余额,但该 Run 请求被拒绝
Provider Usage 缺失或结果不明确Attempt 标记估算或未知,不按零成本处理

验收后在 用量与调用 展开 Attempt,核对 Provider 报告 Token、价格快照、输入/输出/固定费用、 estimated 标记和最终金额。跨功能的重试与预算组合见 最佳实践案例三