概覽
Token 是 OpenAI 模型處理文字時使用的單位。一個 Token 可以代表一個字元、單字的一部分、整個單字或標點符號。空格也會影響文字如何劃分為 Token。
Token 數不等同於單字數。相同文字可能會因模型、編碼及語言而產生不同的 Token 數。
瞭解文字如何轉換為 Token
將文字傳送給模型時:
文字會劃分為 Token。
模型會處理這些 Token。
模型會產生輸出 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 計算 API。
此 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。
