API 参考Google 兼容
计算 Token
Gemini Token 计数 API - API 调用前预估 Token 使用量和成本。为 Gemini Pro、Gemini 1.5 计算提示词 Token,优化支出。
计算 Token
在发送到模型之前计算内容中的 token 数量。用于估算成本并确保内容适合上下文限制。
成本估算:使用此端点在发出生成请求之前估算 API 成本。
端点
POST https://api.uniterouter.ai/v1beta/models/{model}:countTokens认证
x-goog-api-key: your_uniterouter_api_key路径参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
model | string | 是 | 用于分词的模型 ID |
请求体
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
contents | array | 是 | 要计算 token 的内容 |
generateContentRequest | object | 否 | 要计算 token 的完整请求 |
请求示例
curl -X POST "https://api.uniterouter.ai/v1beta/models/gemini-2.0-flash:countTokens" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $UNITEROUTER_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "写一篇关于人工智能及其对社会影响的详细文章。"}]
}
]
}'import google.generativeai as genai
genai.configure(
api_key="your_uniterouter_api_key",
transport="rest",
client_options={"api_endpoint": "api.uniterouter.ai"}
)
model = genai.GenerativeModel("gemini-2.0-flash")
# 计算简单提示的 token
token_count = model.count_tokens("你好,你好吗?")
print(f"Token 数量: {token_count.total_tokens}")
# 计算对话的 token
token_count = model.count_tokens([
{"role": "user", "parts": ["什么是 AI?"]},
{"role": "model", "parts": ["AI 是人工智能..."]},
{"role": "user", "parts": ["告诉我更多关于机器学习的内容"]}
])
print(f"对话 token 数: {token_count.total_tokens}")import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("your_uniterouter_api_key", {
baseUrl: "https://api.uniterouter.ai"
});
const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });
const result = await model.countTokens({
contents: [
{
role: "user",
parts: [{ text: "你好,你好吗?" }]
}
]
});
console.log(`总 token 数: ${result.totalTokens}`);响应
{
"totalTokens": 15
}模型上下文限制
| 模型 | 上下文窗口 | 最大输出 |
|---|---|---|
gemini-2.0-flash | 1,048,576 | 8,192 |
gemini-2.0-flash-thinking | 32,767 | 8,192 |
gemini-1.5-pro | 2,097,152 | 8,192 |
gemini-1.5-flash | 1,048,576 | 8,192 |
使用场景
预检查
确保您的内容适合模型的上下文窗口:
def check_fits_context(content, model_name, max_context=1000000):
model = genai.GenerativeModel(model_name)
token_count = model.count_tokens(content)
if token_count.total_tokens > max_context:
raise ValueError(f"内容太大: {token_count.total_tokens} > {max_context}")
return token_count.total_tokens
# 发送前检查
try:
tokens = check_fits_context(long_document, "gemini-2.0-flash")
print(f"内容适合: {tokens} token")
except ValueError as e:
print(f"错误: {e}")成本估算
# 定价(示例 - 请查看当前费率)
INPUT_COST_PER_MILLION = 0.075 # 每百万输入 token $0.075
OUTPUT_COST_PER_MILLION = 0.30 # 每百万输出 token $0.30
def estimate_cost(prompt, estimated_output_tokens=500):
model = genai.GenerativeModel("gemini-2.0-flash")
input_tokens = model.count_tokens(prompt).total_tokens
input_cost = (input_tokens / 1_000_000) * INPUT_COST_PER_MILLION
output_cost = (estimated_output_tokens / 1_000_000) * OUTPUT_COST_PER_MILLION
return {
"input_tokens": input_tokens,
"estimated_output_tokens": estimated_output_tokens,
"estimated_cost": input_cost + output_cost
}
estimate = estimate_cost("写一篇 500 字关于 AI 的文章")
print(f"估计成本: ${estimate['estimated_cost']:.6f}")相关文档
How is this guide?