概覽
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。訊息結構、工具、結構描述、圖像及檔案均可能影響完整的輸入數目。
計算完整 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。
你亦可在 Usage Dashboard 查看不同時段的活動。有關串流使用量等指示,請參閱:查看 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。
