Vertex AI:totalTokens与计费字符的费用转换及术语关系咨询
解答:Vertex AI Gemini API 计费字段与费用计算
一、术语关联说明
totalTokens:等于输入文本tokens + 输出文本tokens的总和,仅统计纯文本交互的token数量,不包含图片等多媒体内容的计费单位。totalBillableCharacters:仅对应输入中的多媒体内容(如你发送的base64格式图片),Google会将图片转换为可计费字符数来计算费用,这部分属于输入侧的计费项,但不计入totalTokens。- 输入tokens:分为两部分:
- 文本prompt对应的token数(属于
totalTokens的组成部分); - 图片等多媒体对应的
totalBillableCharacters(单独的输入计费维度,与文本tokens分开统计)。
- 文本prompt对应的token数(属于
- 输出文本tokens:模型返回的文本内容对应的token数,是
totalTokens的组成部分之一。
二、费用计算方法
关键前提
若仅拿到totalTokens和totalBillableCharacters,无法准确拆分输入、输出文本的token数,会导致费用计算误差。建议优先从API响应的usageMetadata字段中获取**promptTokenCount(输入文本tokens数)和candidatesTokenCount(输出文本tokens数)**,这两个值相加即为totalTokens。
计费公式
总费用 = 输入文本tokens费用 + 输出文本tokens费用 + 图片可计费字符数费用
各部分费率(基于Gemini Flash 2.0 Lite定价):
- 输入文本tokens:$0.075 / 100万tokens
- 输出文本tokens:$0.30 / 100万tokens
- 图片可计费字符:$0.075 / 100万字符(以官方定价标准为准)
代码示例(Python)
# 模拟API返回的使用数据(包含详细token拆分) api_usage_response = { "totalTokens": 1500, "totalBillableCharacters": 200000, # 图片对应的可计费字符数 "usageMetadata": { "promptTokenCount": 1000, # 输入文本tokens数 "candidatesTokenCount": 500 # 输出文本tokens数 } } # 定义费率(单位:美元/100万单位) RATE_INPUT_TEXT = 0.075 RATE_OUTPUT_TEXT = 0.30 RATE_IMAGE_CHAR = 0.075 # 计算各部分费用 cost_input_text = (api_usage_response["usageMetadata"]["promptTokenCount"] / 1_000_000) * RATE_INPUT_TEXT cost_output_text = (api_usage_response["usageMetadata"]["candidatesTokenCount"] / 1_000_000) * RATE_OUTPUT_TEXT cost_image = (api_usage_response["totalBillableCharacters"] / 1_000_000) * RATE_IMAGE_CHAR total_cost = cost_input_text + cost_output_text + cost_image # 打印结果 print(f"输入文本费用: ${cost_input_text:.6f}") print(f"输出文本费用: ${cost_output_text:.6f}") print(f"图片处理费用: ${cost_image:.6f}") print(f"本次请求总费用: ${total_cost:.6f}")
仅拥有totalTokens时的临时处理(不推荐)
如果确实无法获取详细token拆分,只能做估算(误差较大):
- 假设输入、输出token的比例(比如按常见的7:3或根据你的业务场景预估);
- 按比例拆分
totalTokens后再套用费率计算; - 图片部分费用仍按
totalBillableCharacters计算。
这种方式仅适合临时参考,建议调整API请求配置,确保返回usageMetadata中的详细token统计。
内容的提问来源于stack exchange,提问作者MJQZ1347
相关产品推荐
相关产品推荐

