跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

SDK 用量、上下文与配额

区分每次调用、会话累计和账户额度,并动态读取计费相关字段。

SDK 提供实时事件和按需 RPC 两种用量入口。调用 token、当前上下文占用、整个会话累计及账户额度各有不同范围,不能将其中一个数字当作全部账单。

选择需要的信号

需求接口范围
每次模型调用 tokenassistant.usage当前会话实时事件,包含 subagent 调用
当前上下文使用量session.usage_info当前会话实时事件
立即读取上下文组成session.rpc.metadata.contextInfo(...)当前会话快照
累计用量session.rpc.usage.getMetrics()整个会话,主代理和子代理
模型价格信息client.rpc.models.list({})服务器级模型列表
账户配额client.rpc.account.getQuota({})认证身份的额度

getMetrics、contextInfo 及 recomputeContextTokens 在生成的 RPC 中标为实验性;.NET 会产生 GHCP001 诊断。依赖这些接口时固定 SDK 与 runtime,不把本页字段表当永远不变的完整 Schema。

实时事件不能代替恢复后的累计

assistant.usage 中 inputTokens、outputTokens 属于该次模型调用;cost 是 premium request multiplier,不是美元。事件为 ephemeral,恢复会话时不会重放,单纯在 UI 内累加新收到的事件会漏掉此前用量。

session.usage_info 的 currentTokens / tokenLimit 表示当前上下文窗口占用,不是历史所有调用 token 的累计。完整字段如缓存、推理和时延见事件参考。

读取上下文组成

const { contextInfo } = await session.rpc.metadata.contextInfo({
  promptTokenLimit: 0,
  outputTokenLimit: 0,
});
if (contextInfo) {
  console.log(contextInfo.totalTokens, contextInfo.promptTokenLimit);
  console.log(contextInfo.systemTokens, contextInfo.conversationTokens);
  console.log(contextInfo.toolDefinitionsTokens);
}

promptTokenLimit 为 0 使用 runtime 默认;不知道 outputTokenLimit 时传 0。系统 prompt 与工具元数据尚未缓存、会话未完成初始化时 contextInfo 为 null,应显示数据尚不可用,不把它显示成零占用。

会话累计与模型价格

getMetrics 返回 totalNanoAiu、totalPremiumRequestCost 和 modelMetrics。后者按模型标识记录 usage.inputTokens、usage.outputTokens 与 totalNanoAiu;这些 key 是 runtime 字符串,不是固定编译时枚举。

totalNanoAiu 的单位为 nano-AI units。官方例子除以 1e9,但同时要求按最新 Copilot 计费规则确认换算;本页不将该算式进一步包装成货币价格。展示费用前应核实当前账单口径,不能与 per-call cost 混为一谈。

模型列表可返回 billing.multiplier,以及 tokenPrices 的 inputPrice、outputPrice、cachePrice、batchSize。价格按每批 token 表示,batchSize 给出一批数量;字段可能缺失,应动态读取而不是写死所有模型的固定单价。

账户配额

quotaSnapshots 常见 key 包括 premium_interactions、chat、completions,但 key 同样由 runtime 决定,读取前检查存在性。快照字段包括:

  • entitlementRequests:本期额度,-1 表示 unlimited。
  • usedRequests:本期已用请求。
  • remainingPercentage:剩余百分比。
  • resetDate:ISO 8601 重置日期。

多租户应用需为目标用户查询配额,不能把客户端默认身份的额度展示给所有用户。官方支持向 getQuota 提供该用户 token;参数形状应遵循当前语言生成类型与多租户说明。会话软预算则见会话上限,它与账户配额不是同一限制。