列出词元并进行计数

本页面介绍了如何使用 Google Gen AI SDK 列出提示的词元及其词元 ID,以及如何获取提示的词元总数。

词元以及词元列表和计数的重要性

生成式 AI 模型会将提示中的文本和其他数据细分为单元(称为“词元”)以进行处理。数据转换为词元的方式取决于所使用的词元化器。词元可以是字符、字词或短语。

每个模型具有在提示和响应中可以处理的词元数上限。了解提示的词元数有助于您了解是否已超出此限制。此外,计数词元还会返回提示的可结算字符,这有助于您估算费用。

列出词元会返回您的提示被细分为的词元列表。每个列出的词元都与词元 ID 相关联,这有助于您进行问题排查和分析模型行为。

支持的模型

下表显示了支持词元列表和词元计数的模型:

获取提示的令牌和令牌 ID 列表

以下代码示例展示了如何获取提示的词元和词元 ID 列表。提示只能包含文本。不支持多模态提示。

Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai from google.genai.types import HttpOptions  client = genai.Client(http_options=HttpOptions(api_version="v1")) response = client.models.compute_tokens(     model="gemini-2.5-flash",     contents="What's the longest word in the English language?", )  print(response) # Example output: # tokens_info=[TokensInfo( #    role='user', #    token_ids=[1841, 235303, 235256, 573, 32514, 2204, 575, 573, 4645, 5255, 235336], #    tokens=[b'What', b"'", b's', b' the', b' longest', b' word', b' in', b' the', b' English', b' language', b'?'] #  )]

Go

了解如何安装或更新 Go

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True

import ( 	"context" 	"encoding/json" 	"fmt" 	"io"  	genai "google.golang.org/genai" )  // computeWithTxt shows how to compute tokens with text input. func computeWithTxt(w io.Writer) error { 	ctx := context.Background()  	client, err := genai.NewClient(ctx, &genai.ClientConfig{ 		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"}, 	}) 	if err != nil { 		return fmt.Errorf("failed to create genai client: %w", err) 	}  	modelName := "gemini-2.0-flash-001" 	contents := []*genai.Content{ 		{Parts: []*genai.Part{ 			{Text: "What's the longest word in the English language?"}, 		}, 			Role: "user"}, 	}  	resp, err := client.Models.ComputeTokens(ctx, modelName, contents, nil) 	if err != nil { 		return fmt.Errorf("failed to generate content: %w", err) 	}  	type tokenInfoDisplay struct { 		IDs    []int64  `json:"token_ids"` 		Tokens []string `json:"tokens"` 	} 	// See the documentation: https://pkg.go.dev/google.golang.org/genai#ComputeTokensResponse 	for _, instance := range resp.TokensInfo { 		display := tokenInfoDisplay{ 			IDs:    instance.TokenIDs, 			Tokens: make([]string, len(instance.Tokens)), 		} 		for i, t := range instance.Tokens { 			display.Tokens[i] = string(t) 		}  		data, err := json.MarshalIndent(display, "", "  ") 		if err != nil { 			return fmt.Errorf("failed to marshal token info: %w", err) 		} 		fmt.Fprintln(w, string(data)) 	}  	// Example response: 	// { 	// 	"ids": [ 	// 		1841, 	// 		235303, 	// 		235256, 	//    ... 	// 	], 	// 	"values": [ 	// 		"What", 	// 		"'", 	// 		"s", 	//    ... 	// 	] 	// }  	return nil } 

获取提示的词元数和计费字符数

以下代码示例展示了如何获取提示的词元数和计费字符数。支持纯文本提示和多模态提示。

Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai from google.genai.types import HttpOptions  client = genai.Client(http_options=HttpOptions(api_version="v1"))  prompt = "Why is the sky blue?"  # Send text to Gemini response = client.models.generate_content(     model="gemini-2.5-flash", contents=prompt )  # Prompt and response tokens count print(response.usage_metadata)  # Example output: #  cached_content_token_count=None #  candidates_token_count=311 #  prompt_token_count=6 #  total_token_count=317

Go

了解如何安装或更新 Go

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True

import ( 	"context" 	"encoding/json" 	"fmt" 	"io"  	genai "google.golang.org/genai" )  // generateTextAndCount shows how to generate text and obtain token count metadata from the model response. func generateTextAndCount(w io.Writer) error { 	ctx := context.Background()  	client, err := genai.NewClient(ctx, &genai.ClientConfig{ 		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"}, 	}) 	if err != nil { 		return fmt.Errorf("failed to create genai client: %w", err) 	}  	modelName := "gemini-2.0-flash-001" 	contents := []*genai.Content{ 		{Parts: []*genai.Part{ 			{Text: "Why is the sky blue?"}, 		}, 			Role: "user"}, 	}  	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil) 	if err != nil { 		return fmt.Errorf("failed to generate content: %w", err) 	}  	usage, err := json.MarshalIndent(resp.UsageMetadata, "", "  ") 	if err != nil { 		return fmt.Errorf("failed to convert usage metadata to JSON: %w", err) 	} 	fmt.Fprintln(w, string(usage))  	// Example response: 	// { 	// 	 "candidatesTokenCount": 339, 	// 	 "promptTokenCount": 6, 	// 	 "totalTokenCount": 345 	// }  	return nil }