For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽

計算 Token 數量

在傳送請求前,取得準確的輸入 Token 數量。

Token 計數功能可讓你在將請求傳送給模型之前,確定該請求會使用多少輸入 Token。你可以用它來:

  • 最佳化提示詞 ,使其符合上下文限制
  • 在呼叫 API 前估算成本
  • 依據大小分派請求 (例如,將較短的提示詞傳送給速度較快的模型)
  • 避免圖像和檔案的用量超出預期 ,不再依靠字元數估算

輸入 Token 計數端點接受的輸入格式與 Responses API 相同。傳入文字、訊息、圖像、檔案、工具或對話,API 就會傳回模型將接收的確切 Token 數量。

計數結果包含用來表示請求結構的格式 Token,例如標示訊息角色和邊界的 Token。這些 Token 可能不會出現在你於本機進行 Token 化處理的文字或欄位中。

為什麼要使用 Token 計數 API?

tiktoken 等本機 Token 化工具適用於純文字,但有以下限制:

  • 不支援圖像和檔案 ,而 characters / 4 之類的估算方式並不準確
  • 工具和結構描述 會增加 Token 數量,且難以在本機計算
  • 模型特有的行為 (例如推理、快取)可能改變 Token 化處理方式

Token 計數 API 能處理上述所有情況。使用原本要傳送給 responses.create 的相同酬載,即可取得準確的計數結果,再將結果用於訊息驗證或成本估算流程。

計算基本訊息的 Token 數量

簡單文字輸入
from openai import OpenAI

client = OpenAI()

response = client.responses.input_tokens.count(
    model="gpt-6-astra", input="Tell me a joke."
)
print(response.input_tokens)

計算對話的 Token 數量

多輪對話
from openai import OpenAI

client = OpenAI()

response = client.responses.input_tokens.count(
    model="gpt-6-astra",
    input=[
        {"role": "user", "content": "What is 2 + 2?"},
        {"role": "assistant", "content": "2 + 2 equals 4."},
        {"role": "user", "content": "What about 3 + 3?"},
    ],
)
print(response.input_tokens)

計算含指示的輸入 Token 數量

含系統指示的輸入
from openai import OpenAI

client = OpenAI()

response = client.responses.input_tokens.count(
    model="gpt-6-astra",
    instructions="You are a helpful assistant that explains concepts simply.",
    input="Explain quantum computing in one sentence.",
)
print(response.input_tokens)

計算含圖像的輸入 Token 數量

圖像消耗的 Token 數量取決於圖像大小和細節程度。Token 計數 API 會傳回確切數量,無須猜測。

含圖像的輸入
from openai import OpenAI

client = OpenAI()

# Use file_id from uploaded file, or image_url for a URL
response = client.responses.input_tokens.count(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_image",
                    "image_url": "https://example.com/chart.png",
                },
                {"type": "input_text", "text": "Summarize this chart."},
            ],
        }
    ],
)
print(response.input_tokens)

你可以使用 file_id(來自 Files API)或 image_url(URL 或 base64 資料 URL)。詳情請參閱圖像與視覺

計算含工具的輸入 Token 數量

工具定義(函式結構描述、MCP 伺服器等)會增加上下文中的 Token 數量。請將它們與輸入內容一起計算:

含函式工具的輸入
from openai import OpenAI

client = OpenAI()

response = client.responses.input_tokens.count(
    model="gpt-6-astra",
    tools=[
        {
            "type": "function",
            "name": "get_weather",
            "description": "Get the current weather in a location",
            "parameters": {
                "type": "object",
                "properties": {"location": {"type": "string"}},
                "required": ["location"],
            },
        }
    ],
    input="What is the weather in San Francisco?",
)
print(response.input_tokens)

計算含檔案的輸入 Token 數量

支援檔案輸入(目前支援 PDF)。如同呼叫 responses.create 時一樣,傳入 file_idfile_urlfile_data。Token 計數反映模型處理後的完整輸入。

瞭解輸出 Token 計數

回報的輸出 Token 用量包含模型生成的所有 Token,而不只是回應中可見的文字。Responses API 以 output_tokens 回報此總數,Chat Completions API 則以 completion_tokens 回報。

部分模型(包括 GPT-5 模型)會生成用來設定格式或劃分回應通道、工具呼叫及其他訊息結構的 Token。這些格式 Token 不會出現在訊息內容或 logprobs 中,也不一定會在用量中單獨列出。因此,即使回報的 reasoning_tokens 值為 0,回報的輸出或補全 Token 數量仍可能高於可見 Token 的數量,或 logprobs 中包含的 Token 數量。

max_output_tokensmax_completion_tokens 參數限制的是模型生成的所有 Token,包含不可見的 Token。不可見 Token 的數量會隨模型和回應結構而異,因此請勿假設回報用量與可見輸出之間的差值固定不變。若需要特定數量的可見輸出,請在設定這些上限時預留餘裕。

API 參考文件

如需完整參數和回應結構,請參閱輸入 Token 計數 API 參考文件。端點如下:

POST /v1/responses/input_tokens

回應包含 input_tokens(整數)和 object: "response.input_tokens"