等价请求重复
只有参数、数据期间、访问权限和时效要求一致时,重复请求才可能避免。提出复用方案前,还要比较返回证据是否等价。
金融与市场数据
按工具、计费单位、重复调用与结果审计账单,以可复现基线衡量节省效果。
发布日期:2026年4月15日 · QVeris团队制作


金融 Agent 成本审计应将调用事件与最终积分台账勾稽。输入为七天用量导出、工具与供应商标识、时间戳、请求ID、最终计费单位及任务结果;输出为勾稽费用表、重复候选、失败调用证据和有边界的优化方案。
以下数字是示例数据,不是真实客户账单或节省保证。单位费率为假设积分,不是供应商公开价格;积分不等于人民币。Discover 与 Inspect 免费,不应计入付费调用。
固定 UTC 起止时间,列明纳入的 Agent、运行环境和账户。生产任务、定时研究和开发测试分别统计,同时记录尝试任务数与完成任务数。仅因完成任务减少而降低账单,不代表效率提升。
能力调用积分、外部模型 Token 和基础设施费用分开记账;只有存在可靠任务或追踪标识时才进行关联。保留原始计费单位和币种,不从积分余额推算货币兑换率。
用量事件说明发生了什么,积分台账说明余额如何变化。一次执行可能有调整、待结算项目或后续退款。应通过稳定标识关联,先检查未匹配记录,再报告合计;不能把每条用量记录乘以目录预估价,就称为真实账单。
以下字段名是建议的本地审计结构,不代表供应商导出的固定列名。将官方用量和台账导出映射到这些字段,同时保留原始文件;审计数据不应包含密钥或不必要的个人信息。
| 字段组 | 记录内容 | 审计检查 |
|---|---|---|
| 记录身份 | 台账条目 ID、执行 ID、任务 ID | 区分执行与费用调整,拒绝重复台账条目。 |
| 时间与状态 | UTC 事件时间、数据时点、结算状态 | 核对时区、审计截止点及延迟入账记录。 |
| 能力与来源 | 已检查的能力标识、供应商及账户范围 | 保留真实标识,不合并名称相近但不同的工具。 |
| 单位与费用 | 计费单位、结算数量、带正负号的积分变动 | 分别勾稽扣费、退款与净支出。 |
| 请求等价性 | 规范化参数、请求期间、权限及时效要求 | 相同股票代码不足以证明重复。 |
| 任务结果 | 成功、空结果、失败、验收通过及证据检查 | 将成本关联到有效结果,而不只看 HTTP 状态。 |
请求指纹中不要包含密钥。指纹只用于发现候选重复项,不代表已经获得存储或复用响应的许可;数据保留和再分发须遵循来源契约。
| 任务 | 次数 | 假设每次积分 | 积分合计 |
|---|---|---|---|
| quote | 14 | 3 | 42 |
| earnings | 8 | 15 | 120 |
| news | 5 | 8 | 40 |
| risk | 3 | 12 | 36 |
| FX | 6 | 2 | 12 |
| filing | 2 | 5 | 10 |
| index | 9 | 4 | 36 |
| sentiment | 3 | 6 | 18 |
| 合计 | 50 | — | 314 |
每行满足次数×假设单价=合计,八行总计314积分。实际审计须采用最终台账费用并计入相关调整;仅凭HTTP状态不能判断是否计费。
八行数据表示 50 次假设调用,其中财报类占假设总积分的 120/314。占比最大并不等于浪费;应先检查覆盖范围、报告期间及验收结果是否需要这些调用,再决定是否优化。
比较两轮运行前,应按账户原有正负号口径勾稽期初余额、购买、赠送、扣费、退款和期末余额。任务支出统计应排除无关充值;暂估项目要明确标记,结算完成后重新审计。
只有参数、数据期间、访问权限和时效要求一致时,重复请求才可能避免。提出复用方案前,还要比较返回证据是否等价。
超时可能意味着执行状态未明。保留原始执行或幂等引用,通过受支持接口查询状态,再按有上限的策略重试。
反复获取完整历史或整份公告,可能超出任务需要。检查是否支持日期筛选、字段选择或批量接口,同时计量数据成本和下游模型输入。
Agent 可能反复发现或检查,却没有推进决策。即使这些操作免费,也应单独记录耗时与模型工作量,不能虚构能力调用费用。
假设14次报价具有相同代码、请求时点、权限与时效容忍度,可由应用层复用减少13次,减少13×3=39积分。再假设六次汇率请求中四次重复,减少4×2=8积分。合计减少47积分,剩余314−47=267积分,示例减少14.97%。
以上假设必须验证。用户要求当前或最新数据时,不应复用过期行情结果;不得假设失败调用一律免费、供应商可无条件互换、平台自动缓存或必然节省某个比例。
| 指标 | 基线 | 建模结果 |
|---|---|---|
| 假设调用次数 | 50 | 移除 17 次等价调用后为 33 |
| 假设积分 | 314 | 267 |
| 建模减少量 | 不适用 | 47 积分;47/314=14.97% |
| 必要验收 | 原任务证据与时效要求 | 必须保持等价,否则否决该方案 |
逐条记录准备移除的请求,以及哪份保留响应可替代它。如果报价发生在不同市场时点,或客户权限不同,减少 13 次报价的假设就可能不成立;应根据符合条件的子集重算,而不是维持预设节省比例。
| 控制措施 | 实施决策 | 失效边界 |
|---|---|---|
| 合并并发请求 | 只在允许范围内合并等价的进行中只读请求。 | 不合并不同账户、权限或数据期间。 |
| 应用缓存 | 定义缓存键、有效期、来源时间戳及失效规则。 | 任务需要更新证据或禁止复用时,绕过或刷新缓存。 |
| 有限重试 | 区分错误类型;输入错误和权限不足时停止,并设置尝试上限。 | 执行未明时先勾稽状态,避免盲目再发请求。 |
| 最小必要取数 | 选择满足输出契约的受支持字段、期间及批量选项。 | 若丢失必要证据,响应再小也不能接受。 |
使用固定证据要求回放同一组任务,比较完成率、来源覆盖、必需字段、时间戳、数值准确性和缺失数据处理。重大差异应人工复核;如果节省伴随陈旧报价、缺失公告或静默降级,就应判定优化失败。
| 验收项 | 保留的证据 |
|---|---|
| 任务可比 | 相同任务构成、请求期间、权限和验收结果。 |
| 时效与溯源 | 每项必要结果的来源身份、事件或数据时点及获取时间。 |
| 计算正确 | 统一单位、币种和报告口径,并执行确定性复算。 |
| 如实失败 | 明确记录陈旧、缺失、权限不足和执行未明状态。 |
总支出之外,还应报告每个验收通过任务的净结算积分,并保留失败任务的费用。模型或基础设施成本按各自单位另列,不将 Token、积分和货币金额直接相加。
以下Python示例仅在本地计算,不发起网络调用,也不使用编造的工具标识。实际用量与积分导出应依据当前官方用量和台账文档,不依赖未经验证的CLI参数。
rows = [(14, 3), (8, 15), (5, 8), (3, 12),
(6, 2), (2, 5), (9, 4), (3, 6)]
baseline = sum(count * unit for count, unit in rows)
removed = 13 * 3 + 4 * 2
after = baseline - removed
assert baseline == 314 and after == 267
print(round(100 * removed / baseline, 2)) # 14.97
将下面仅依赖标准库的 Python 程序保存为 audit_usage.py。CSV 是本页定义的分析结构,并非官方导出格式。显式映射原台账后,用正数 credits_delta 表示结算扣费,用负数表示退款或冲销;调整记录应使用独立条目标识。
import csv
import sys
from collections import defaultdict
from decimal import Decimal, InvalidOperation
def audit(stream):
reader = csv.DictReader(stream)
required = {"entry_id", "task_id", "tool", "outcome", "credits_delta"}
if not required.issubset(reader.fieldnames or []):
raise ValueError("Missing normalized audit columns")
seen = set()
net = Decimal("0")
by_tool = defaultdict(Decimal)
by_outcome = defaultdict(Decimal)
for line, row in enumerate(reader, start=2):
if any(not (row.get(k) or "").strip() for k in required):
raise ValueError(f"Blank required field on line {line}")
entry = row["entry_id"].strip()
if entry in seen:
raise ValueError(f"Duplicate ledger entry: {entry}")
seen.add(entry)
try:
amount = Decimal(row["credits_delta"])
except InvalidOperation as exc:
raise ValueError(f"Invalid credits on line {line}") from exc
if not amount.is_finite():
raise ValueError(f"Non-finite credits on line {line}")
net += amount
by_tool[row["tool"]] += amount
by_outcome[row["outcome"]] += amount
return {"entries": len(seen), "net_credits": str(net),
"by_tool": {k: str(v) for k, v in by_tool.items()},
"by_outcome": {k: str(v) for k, v in by_outcome.items()}}
if __name__ == "__main__":
if len(sys.argv) != 2:
raise SystemExit("Usage: python audit_usage.py normalized_ledger.csv")
with open(sys.argv[1], newline="", encoding="utf-8-sig") as source:
print(audit(source))
程序会拒绝空字段、重复台账标识和无效金额,再按工具及结果汇总净积分。它刻意不自动删除重复请求:多次执行可能合理,但重复台账条目会抬高统计;任务是否通过质量验收也不由程序代判。
仅对获准使用的本地导出运行:python audit_usage.py normalized_ledger.csv。若测试输入含 7、7 两笔扣费和 −2 一笔退款,净积分应为 12;这验证的是算术与解析逻辑,不代表生产发票已获核验。
每项发现都应包含负责人、证据、预期变化和验收测试。计费规则或来源权限不清时应记录不确定性,不能将其包装成节省结论。
本例不假设固定人民币兑换关系。应采用实际购买币种和发票条款,外部模型或客户端费用另行核算。
官方价格页说明二者免费。Call费用遵循能力计费规则与最终台账;购买的充值积分不过期,试用或促销条款可能不同。
匹配的工作负载、相同输出质量要求、明确计费期间和失败处理,以及可勾稽的前后台账。示例建模不等于生产实测。
不是。客户端丢失响应时,执行或结算可能仍在继续。应保留原标识,使用文档支持的状态勾稽方式,并查询最终台账,再决定重试或判断退款。
必须先依据任务契约核对覆盖、时间戳、字段定义、权限及复用条件。比较时应计入失败和备用调用,衡量验收通过结果的成本,而不只比较展示单价。
审计频率应匹配工作负载变化及结算周期。路由、计费规则、模型、提示词或缓存策略变化后应重跑;保留可比区间,避免把正常市场活动变化误当作工程优化。
根据当前官方文档映射导出和执行标识,并保留审计所用规则的带日期副本。本页提供分析方法,不能代替账户最终台账。
