OpenAI
此頁面由機器翻譯。查看原始英文文章

瞭解並計算 Token

瞭解輸入、輸出、快取及推理 Token 如何影響 API 用量、模型限制與費用。

更新日期:12 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 計算 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。

這篇文章有幫助嗎?