OpenAI
页面内容为机器翻译。查看英文原文

了解并计算 Token

了解输入、输出、缓存及推理 Token 如何影响 API 用量、模型限制和成本。

更新于:7 days ago

概述

Token 是 OpenAI 模型处理文本时使用的基本单位。一个 Token 可以表示一个字符、单词的一部分、一个完整单词或标点符号。空格也会影响文本如何拆分为 Token。

Token 数并不等同于单词数。同一文本可能因模型、编码和语言不同而产生不同的 Token 数。

了解文本如何转化为 Token

向模型发送文本时:

  1. 文本会被拆分为 Token。

  2. 模型会处理这些 Token。

  3. 模型会生成输出 Token。这些 Token 可能包括你收到的文本;对于推理模型,还包括不会显示为答案文本的内部推理 Token。

粗略估算英文文本

以下估算可帮助你判断英文文本的大小:

  • 1 个 Token 约等于 4 个字符。

  • 1 个 Token 约等于四分之三个单词。

  • 100 个 Token 约等于 75 个单词。

这些只是估算值,并非精确计数。句子和段落的长度各不相同;在其他语言中,字符、单词和 Token 之间的对应关系也可能不同。

考虑空格和大小写

一个单词可能因拼写、大小写和上下文不同而被拆分成不同的 Token。

例如,red、Red 和 red 的文本并不完全相同:最后一个示例含有一个前导空格。同一种编码可能会以不同方式表示它们。

Token ID 也取决于编码。不要假定示例 Token ID 适用于所有模型。

区分输入与输出 Token

类别说明
输入 Token请求中提供给模型的 Token。也称为提示词 Token。
输出 Token模型生成的 Token。Chat Completions 将其称为补全 Token。
缓存输入 Token通过提示词缓存重复使用的输入 Token。其价格可能与未缓存的输入 Token 不同。
推理 Token推理模型在生成可见答案前内部使用的 Token。

推理 Token 不会显示为答案文本,但会计入输出用量,并按输出 Token 计费。

因此,即使可见答案很短,实际使用的 Token 也可能多于显示文本所体现的数量。

发送请求前计算 Token 数

计算纯文本 Token

使用 Tokenizer 查看文本如何拆分为 Token。

若要通过编程方式对纯文本进行 Token 化处理,请使用 tiktoken。请选择适用于目标模型的编码,例如使用 tiktoken.encoding_for_model(model)。

纯文本 Token 数不一定涵盖 API 请求中的所有 Token。消息结构、工具、架构、图像和文件都会影响完整的输入 Token 数。

计算完整 Responses 输入的 Token 数

若要计算完整 Responses API 输入的 Token 数,请使用输入 Token 计数 API

它接受 Responses 输入格式,包括消息、图像、文件、工具和对话。其计数包括用于请求结构的格式化 Token,例如消息角色和边界。

输入 Token 数无法预测模型会生成多少输出 Token。

查看实际 Token 用量

请求完成后,查看其用量信息。字段名称因端点而异:

  • Chat Completions 会报告 prompt_tokens、completion_tokens 和 total_tokens。

  • Responses 会报告 input_tokens、output_tokens 和 total_tokens。

你还可以在用量控制面板中查看一段时间内的活动。有关流式传输用量等说明,请参阅:查看 API 用量和成本

遵守模型限制

请查阅模型文档,了解其上下文窗口和最大输出限制。这些限制可能因模型而异。

上下文窗口限制了模型在单个请求中可以处理的 Token 数。模型还有输出限制。对于推理模型,除了可见答案外,还应为推理 Token 预留空间。

如果输入过大,你可以:

  • 缩短或改写提示词。

  • 删除不必要或重复的上下文。

  • 将大段输入拆分成较小的部分。

  • 发送前先总结或预处理文本。

使用端点和模型所支持的输出 Token 设置。Chat Completions 使用 max_completion_tokens;Responses 使用 max_output_tokens。

这些请求大小限制与 API 速率限制以及每月用量或支出限制相互独立。请查阅你所用模型的模型文档

了解 Token 定价

对于按 Token 计费的 API,费率取决于模型和 Token 类别。输入、缓存输入和输出 Token 的价格可能不同。其他 API 功能可能采用不同的计费单位。

请在 API 定价页面查看当前费率。

比较模型时,请考虑完成任务所需的 Token 总数和总成本。每百万 Token 的价格较低并不一定意味着总成本更低:不同模型对同一文本进行 Token 化处理的方式可能不同,生成的输出量或推理量也可能不同。

请测试有代表性的任务,不要只比较可见回复的长度。

考虑多个补全结果

如果端点和模型支持生成多个补全结果,额外的补全结果也会消耗 Token。

对于 Chat Completions,将 n 设为大于 1 会生成多个选项。这些选项中生成的 Token 都会计费。

对于旧版 Completions API,best_of 可以生成未全部返回的候选结果。例如,best_of = 3 最多可在所有候选结果中生成 3 × max_tokens 个补全 Token。

这些参数仅适用于特定端点。不要假定其他 API 或模型支持 n 或 best_of。

这篇文章对你有帮助吗?