Gemini dhe modele të tjera gjeneruese të AI përpunojnë hyrjen dhe daljen në një shkallëzim të quajtur token .
Rreth argumenteve
Shenjat mund të jenë karaktere të vetme si z
ose fjalë të tëra si cat
. Fjalët e gjata ndahen në disa shenja. Grupi i të gjithë shenjave të përdorura nga modeli quhet fjalor, dhe procesi i ndarjes së tekstit në token quhet tokenizimi .
Për modelet Gemini, një shenjë është e barabartë me rreth 4 karaktere. 100 argumente janë të barabarta me rreth 60-80 fjalë angleze.
Kur faturimi është i aktivizuar, kostoja e një telefonate në API të Gemini përcaktohet pjesërisht nga numri i kodeve hyrëse dhe dalëse, kështu që të dish se si të numërosh argumentet mund të jetë e dobishme.
Numëroni argumentet
Të gjitha hyrjet dhe daljet nga Gemini API janë të tokenizuara, duke përfshirë tekstin, skedarët e imazheve dhe modalitete të tjera jo tekstuale.
Ju mund të numëroni argumentet në mënyrat e mëposhtme:
Thirrni
countTokens
me hyrjen e kërkesës.
Kjo kthen numrin total të shenjave vetëm në hyrje . Mund ta bëni këtë telefonatë përpara se të dërgoni hyrjen te modeli për të kontrolluar madhësinë e kërkesave tuaja.Përdorni atributin
usageMetadata
në objektinresponse
pasi të keni thirrurgenerate_content
.
Kjo kthen numrin total të argumenteve si në hyrje ashtu edhe në dalje :totalTokenCount
.
Gjithashtu kthen numërimin e shenjave të hyrjes dhe daljes veçmas:promptTokenCount
(shenjat hyrëse) dhecandidatesTokenCount
(shenjat dalëse).
Numëroni shenjat e tekstit
Nëse thërrisni countTokens
me një hyrje vetëm me tekst, ai kthen numrin e shenjave të tekstit vetëm në hyrje ( totalTokens
). Mund ta bëni këtë telefonatë përpara se të telefononi generateContent
për të kontrolluar madhësinë e kërkesave tuaja.
Një tjetër opsion është thirrja e generateContent
dhe më pas përdorimi i atributit usageMetadata
në objektin response
për të marrë sa vijon:
- Numërimet e veçanta të shenjave të hyrjes (
promptTokenCount
) dhe daljes (candidatesTokenCount
) - Numri i përgjithshëm i argumenteve si në hyrje ashtu edhe në dalje (
totalTokenCount
)
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const prompt = "The quick brown fox jumps over the lazy dog.";
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: prompt,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: prompt,
});
console.log(generateResponse.usageMetadata);
Numëroni argumentet me shumë kthesa (chat).
Nëse quani countTokens
me historikun e bisedës, ai kthen numrin total të shenjave të tekstit nga çdo rol në bisedë ( totalTokens
).
Një tjetër opsion është thirrja e sendMessage
dhe më pas përdorimi i atributit usageMetadata
në objektin response
për të marrë sa vijon:
- Numërimet e veçanta të shenjave të hyrjes (
promptTokenCount
) dhe daljes (candidatesTokenCount
) - Numri i përgjithshëm i argumenteve si në hyrje ashtu edhe në dalje (
totalTokenCount
)
Për të kuptuar se sa e madhe do të jetë radha juaj e radhës në bisedë, duhet ta bashkëngjitni atë në histori kur telefononi countTokens
.
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
// Initial chat history.
const history = [
{ role: "user", parts: [{ text: "Hi my name is Bob" }] },
{ role: "model", parts: [{ text: "Hi Bob!" }] },
];
const chat = ai.chats.create({
model: "gemini-2.0-flash",
history: history,
});
// Count tokens for the current chat history.
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: chat.getHistory(),
});
console.log(countTokensResponse.totalTokens);
const chatResponse = await chat.sendMessage({
message: "In one sentence, explain how a computer works to a young child.",
});
console.log(chatResponse.usageMetadata);
// Add an extra user message to the history.
const extraMessage = {
role: "user",
parts: [{ text: "What is the meaning of life?" }],
};
const combinedHistory = chat.getHistory();
combinedHistory.push(extraMessage);
const combinedCountTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: combinedHistory,
});
console.log(
"Combined history token count:",
combinedCountTokensResponse.totalTokens,
);
Numëroni shenjat multimodale
Të gjitha hyrjet në Gemini API janë tokenizuar, duke përfshirë tekstin, skedarët e imazhit dhe modalitete të tjera jo tekstuale. Vini re pikat kryesore të mëposhtme të nivelit të lartë në lidhje me tokenizimin e hyrjes multimodale gjatë përpunimit nga Gemini API:
Me Gemini 2.0, hyrjet e imazhit me të dy dimensionet <=384 piksele llogariten si 258 shenja. Imazhet më të mëdha në një ose të dy dimensionet priten dhe shkallëzohen sipas nevojës në pllaka prej 768x768 pikselësh, secila e llogaritur si 258 shenja. Përpara Gemini 2.0, imazhet përdornin 258 shenja fikse.
Skedarët video dhe audio konvertohen në token me normat e mëposhtme fikse: video me 263 token për sekondë dhe audio me 32 argumente për sekondë.
Skedarët e imazhit
Nëse quani countTokens
me një hyrje tekst-dhe-imazh, ai kthen numrin e kombinuar të shenjave të tekstit dhe imazhit vetëm në hyrje ( totalTokens
). Mund ta bëni këtë telefonatë përpara se të telefononi generateContent
për të kontrolluar madhësinë e kërkesave tuaja. Ju gjithashtu mund të telefononi opsionalisht countTokens
në tekst dhe skedar veçmas.
Një tjetër opsion është thirrja e generateContent
dhe më pas përdorimi i atributit usageMetadata
në objektin response
për të marrë sa vijon:
- Numërimet e veçanta të shenjave të hyrjes (
promptTokenCount
) dhe daljes (candidatesTokenCount
) - Numri i përgjithshëm i argumenteve si në hyrje ashtu edhe në dalje (
totalTokenCount
)
Shembull që përdor një imazh të ngarkuar nga File API:
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const prompt = "Tell me about this image";
const organ = await ai.files.upload({
file: path.join(media, "organ.jpg"),
config: { mimeType: "image/jpeg" },
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
Shembull që ofron imazhin si të dhëna inline:
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const prompt = "Tell me about this image";
const imageBuffer = fs.readFileSync(path.join(media, "organ.jpg"));
// Convert buffer to base64 string.
const imageBase64 = imageBuffer.toString("base64");
// Build contents using createUserContent and createPartFromBase64.
const contents = createUserContent([
prompt,
createPartFromBase64(imageBase64, "image/jpeg"),
]);
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: contents,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: contents,
});
console.log(generateResponse.usageMetadata);
Skedarët video ose audio
Audio dhe video konvertohen secila në token me tarifat fikse të mëposhtme:
- Video: 263 argumente në sekondë
- Audio: 32 shenja në sekondë
Nëse thërrisni countTokens
me një hyrje tekst-dhe-video/audio, ai kthen numërimin e kombinuar të tokenit të tekstit dhe skedarit video/audio vetëm në hyrje ( totalTokens
). Mund ta bëni këtë telefonatë përpara se të telefononi generateContent
për të kontrolluar madhësinë e kërkesave tuaja. Ju gjithashtu mund të telefononi opsionalisht countTokens
në tekst dhe skedar veçmas.
Një tjetër opsion është thirrja e generateContent
dhe më pas përdorimi i atributit usageMetadata
në objektin response
për të marrë sa vijon:
- Numërimet e veçanta të shenjave të hyrjes (
promptTokenCount
) dhe daljes (candidatesTokenCount
) - Numri i përgjithshëm i argumenteve si në hyrje ashtu edhe në dalje (
totalTokenCount
)
// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const prompt = "Tell me about this video";
let videoFile = await ai.files.upload({
file: path.join(media, "Big_Buck_Bunny.mp4"),
config: { mimeType: "video/mp4" },
});
// Poll until the video file is completely processed (state becomes ACTIVE).
while (!videoFile.state || videoFile.state.toString() !== "ACTIVE") {
console.log("Processing video...");
console.log("File state: ", videoFile.state);
await sleep(5000);
videoFile = await ai.files.get({ name: videoFile.name });
}
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
Udhëzimet dhe mjetet e sistemit
Udhëzimet dhe mjetet e sistemit llogariten gjithashtu në numrin total të shenjave për hyrjen.
Nëse përdorni udhëzime të sistemit, numri totalTokens
rritet për të pasqyruar shtimin e systemInstruction
.
Nëse përdorni thirrjen e funksionit, numri totalTokens
rritet për të pasqyruar shtimin e tools
.