豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

Commit 57e07ee

Browse files
authored
chore: token count tool (#820)
small helper
1 parent a6cd2cd commit 57e07ee

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"test:update-snapshots": "npm run build && node scripts/test.mjs --test-update-snapshots",
2323
"prepare": "node --experimental-strip-types scripts/prepare.ts",
2424
"verify-server-json-version": "node --experimental-strip-types scripts/verify-server-json-version.ts",
25-
"eval": "npm run build && node --experimental-strip-types scripts/eval_gemini.ts"
25+
"eval": "npm run build && node --experimental-strip-types scripts/eval_gemini.ts",
26+
"count-tokens": "node --experimental-strip-types scripts/count_tokens.ts"
2627
},
2728
"files": [
2829
"build/src",

scripts/count_tokens.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @license
3+
* Copyright 2026 Google LLC
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
import {parseArgs} from 'node:util';
8+
9+
import {GoogleGenAI} from '@google/genai';
10+
11+
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
12+
13+
const {values, positionals} = parseArgs({
14+
options: {
15+
model: {
16+
type: 'string',
17+
default: 'gemini-2.5-flash',
18+
},
19+
},
20+
allowPositionals: true,
21+
});
22+
23+
if (!positionals[0]) {
24+
console.error('Usage: npm run count-tokens -- -- <text>');
25+
process.exit(1);
26+
}
27+
28+
const response = await ai.models.countTokens({
29+
model: values.model,
30+
contents: positionals[0],
31+
});
32+
console.log(`Input: ${positionals[0]}`);
33+
console.log(`Tokens: ${response.totalTokens}`);

0 commit comments

Comments
 (0)