Skip to content
FunCoding

Search

Search docs, Skills and MCP

SDK 用量、上下文与配额

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

This page has not been translated into English yet. The original Chinese version is shown below.

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;参数形状应遵循当前语言生成类型与多租户说明。会话软预算则见会话上限,它与账户配额不是同一限制。