You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算含Functions的ChatGPT API请求总Token数?

计算包含Messages和Functions的ChatGPT API请求总Token数

核心规则

OpenAI对包含Functions的API请求,Token计数会把Functions的结构化内容(严格按API要求的JSON格式)纳入统计,再加上Messages的Token数和少量固定分隔Token。

Functions部分的Token计算步骤

  • 严格序列化Functions结构:必须按照API要求的格式生成JSON,每个Function需包含name(字符串)、description(字符串)、parameters(JSON Schema格式,包含type、properties、required等字段),不能省略必要字段。
  • 用对应模型的Tokenizer编码:使用tiktoken工具,选择与调用模型匹配的编码(比如cl100k_base对应gpt-3.5-turbo-0613、gpt-4-0613等),将序列化后的Functions JSON字符串传入编码方法,得到Token数。

总Token计算方式

总Token数 = Messages部分Token数 + Functions部分Token数 + 固定分隔Token数(约3-5个,由API内部逻辑添加,比如包裹Functions的标记)

实操示例(Python)

import tiktoken

# 定义你的Functions结构
functions = [
    {
        "name": "get_current_weather",
        "description": "获取指定地点的当前天气",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "城市名称,比如北京、上海"
                },
                "unit": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "温度单位"
                }
            },
            "required": ["location"]
        }
    }
]

# 序列化Functions为JSON字符串
functions_str = str(functions)

# 选择对应模型的编码
encoding = tiktoken.get_encoding("cl100k_base")
# 计算Functions的Token数
function_tokens = len(encoding.encode(functions_str))

# 假设你已经算出messages的Token数为message_tokens
message_tokens = 120
# 总Token数(加上固定分隔Token,这里取4个作为示例)
total_tokens = message_tokens + function_tokens + 4

print(f"Functions Token数: {function_tokens}")
print(f"总Token数: {total_tokens}")

注意事项

  • 不要忽略description字段的内容,无论是Function本身的描述还是参数的描述,都会被计入Token。
  • 如果调用多个Function,所有Function的结构化内容都会被合并统计,无需额外拆分。
  • 不同模型的Tokenizer可能有差异,务必确认使用与API调用模型匹配的编码(比如gpt-3.5-turbo-0301用r50k_base)。

内容的提问来源于stack exchange,提问作者Mdogdope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:48:25