মিথুন এবং অন্যান্য জেনারেটিভ এআই মডেলগুলি টোকেন নামক গ্রানুলিটিতে ইনপুট এবং আউটপুট প্রক্রিয়া করে।
টোকেন সম্পর্কে
টোকেন z
মত একক অক্ষর বা cat
মত পুরো শব্দ হতে পারে। দীর্ঘ শব্দগুলিকে কয়েকটি টোকেনে বিভক্ত করা হয়েছে। মডেল দ্বারা ব্যবহৃত সমস্ত টোকেনের সেটকে শব্দভাণ্ডার বলা হয় এবং টোকেনে পাঠ্য বিভক্ত করার প্রক্রিয়াটিকে টোকেনাইজেশন বলা হয়।
মিথুন মডেলের জন্য, একটি টোকেন প্রায় 4টি অক্ষরের সমতুল্য। 100 টোকেন প্রায় 60-80 ইংরেজি শব্দের সমান।
যখন বিলিং সক্ষম করা হয়, তখন Gemini API-তে কলের খরচ আংশিকভাবে ইনপুট এবং আউটপুট টোকেনের সংখ্যা দ্বারা নির্ধারিত হয়, তাই টোকেনগুলি কীভাবে গণনা করতে হয় তা জানা সহায়ক হতে পারে।
টোকেন গণনা করুন
Gemini API থেকে সমস্ত ইনপুট এবং আউটপুট টোকেনাইজ করা হয়, যার মধ্যে পাঠ্য, চিত্র ফাইল এবং অন্যান্য নন-টেক্সট পদ্ধতি রয়েছে।
আপনি নিম্নলিখিত উপায়ে টোকেন গণনা করতে পারেন:
অনুরোধের ইনপুট সহ
countTokens
কল করুন।
এটি শুধুমাত্র ইনপুটে টোকেনের মোট সংখ্যা প্রদান করে। আপনার অনুরোধের আকার পরীক্ষা করার জন্য মডেলটিতে ইনপুট পাঠানোর আগে আপনি এই কলটি করতে পারেন।generate_content
কল করার পরেresponse
অবজেক্টেusageMetadata
বৈশিষ্ট্যটি ব্যবহার করুন।
এটি ইনপুট এবং আউটপুটে মোট টোকেনের সংখ্যা প্রদান করে:totalTokenCount
।
এটি পৃথকভাবে ইনপুট এবং আউটপুটের টোকেন গণনাও ফেরত দেয়:promptTokenCount
(ইনপুট টোকেন) এবংcandidatesTokenCount
(আউটপুট টোকেন)।
টেক্সট টোকেন গণনা করুন
আপনি যদি শুধুমাত্র টেক্সট ইনপুট দিয়ে countTokens
কল করেন, তাহলে এটি শুধুমাত্র ইনপুটে থাকা টেক্সটের টোকেন কাউন্ট ফেরত দেয় ( totalTokens
)। আপনার অনুরোধের আকার পরীক্ষা করতে generateContent
কল করার আগে আপনি এই কল করতে পারেন।
আরেকটি বিকল্প হল generateContent
কল করা এবং তারপর নিম্নলিখিতগুলি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্য ব্যবহার করা:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
কাউন্ট ) এর পৃথক টোকেন সংখ্যা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
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);
মাল্টি-টার্ন (চ্যাট) টোকেন গণনা করুন
আপনি যদি চ্যাটের ইতিহাসের সাথে countTokens
কল করেন তবে এটি চ্যাটের প্রতিটি ভূমিকা থেকে পাঠ্যের মোট টোকেন গণনা ফেরত দেয় ( totalTokens
)।
আরেকটি বিকল্প হল sendMessage
কল করা এবং তারপরে নিম্নলিখিতগুলি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্য ব্যবহার করা:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
কাউন্ট ) এর পৃথক টোকেন সংখ্যা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
totalTokenCount
)
আপনার পরবর্তী কথোপকথনের পালা কত বড় হবে তা বোঝার জন্য, আপনি যখন 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,
);
মাল্টিমডাল টোকেন গণনা করুন
টেক্সট, ইমেজ ফাইল এবং অন্যান্য নন-টেক্সট মোডালিটি সহ জেমিনি API-তে সমস্ত ইনপুট টোকেনাইজড। জেমিনি API দ্বারা প্রক্রিয়াকরণের সময় মাল্টিমোডাল ইনপুটের টোকেনাইজেশন সম্পর্কে নিম্নলিখিত উচ্চ-স্তরের মূল পয়েন্টগুলি নোট করুন:
Gemini 2.0 এর সাথে, উভয় মাত্রা <=384 পিক্সেল সহ ইমেজ ইনপুট 258 টোকেন হিসাবে গণনা করা হয়। এক বা উভয় মাত্রার বড় চিত্রগুলিকে প্রয়োজন অনুসারে 768x768 পিক্সেলের টাইলগুলিতে ক্রপ করা হয় এবং স্কেল করা হয়, প্রতিটি 258 টোকেন হিসাবে গণনা করা হয়। জেমিনি 2.0-এর আগে, ছবিগুলি একটি নির্দিষ্ট 258 টোকেন ব্যবহার করত।
ভিডিও এবং অডিও ফাইলগুলি নিম্নলিখিত নির্দিষ্ট হারে টোকেনে রূপান্তরিত হয়: ভিডিও প্রতি সেকেন্ডে 263 টোকেন এবং অডিও প্রতি সেকেন্ডে 32 টোকেন।
ইমেজ ফাইল
আপনি যদি টেক্সট-এবং-ইমেজ ইনপুট দিয়ে countTokens
কল করেন, তাহলে এটি শুধুমাত্র ইনপুটে থাকা টেক্সট এবং ইমেজের সম্মিলিত টোকেন কাউন্ট ফেরত দেয় ( totalTokens
)। আপনার অনুরোধের আকার পরীক্ষা করতে generateContent
কল করার আগে আপনি এই কল করতে পারেন। আপনি ঐচ্ছিকভাবে টেক্সট এবং ফাইলে countTokens
আলাদাভাবে কল করতে পারেন।
আরেকটি বিকল্প হল generateContent
কল করা এবং তারপর নিম্নলিখিতগুলি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্য ব্যবহার করা:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
কাউন্ট ) এর পৃথক টোকেন সংখ্যা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
totalTokenCount
)
ফাইল 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);
উদাহরণ যা ইমেজটিকে ইনলাইন ডেটা হিসাবে প্রদান করে:
// 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);
ভিডিও বা অডিও ফাইল
অডিও এবং ভিডিও প্রতিটি নিম্নলিখিত নির্দিষ্ট হারে টোকেনে রূপান্তরিত হয়:
- ভিডিও: প্রতি সেকেন্ডে 263 টোকেন
- অডিও: প্রতি সেকেন্ডে 32 টোকেন
আপনি যদি টেক্সট-এবং-ভিডিও/অডিও ইনপুট সহ countTokens
কল করেন, তাহলে এটি শুধুমাত্র ইনপুটে থাকা টেক্সট এবং ভিডিও/অডিও ফাইলের সম্মিলিত টোকেন কাউন্ট ফেরত দেয় ( totalTokens
)। আপনার অনুরোধের আকার পরীক্ষা করতে generateContent
কল করার আগে আপনি এই কল করতে পারেন। আপনি ঐচ্ছিকভাবে টেক্সট এবং ফাইলে countTokens
আলাদাভাবে কল করতে পারেন।
আরেকটি বিকল্প হল generateContent
কল করা এবং তারপর নিম্নলিখিতগুলি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্য ব্যবহার করা:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
কাউন্ট ) এর পৃথক টোকেন সংখ্যা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
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);
সিস্টেম নির্দেশাবলী এবং সরঞ্জাম
সিস্টেম নির্দেশাবলী এবং সরঞ্জামগুলি ইনপুটের জন্য মোট টোকেন গণনার দিকেও গণনা করে।
আপনি যদি সিস্টেম নির্দেশাবলী ব্যবহার করেন, তাহলে systemInstruction
এর সংযোজন প্রতিফলিত করতে totalTokens
সংখ্যা বৃদ্ধি পায়।
আপনি যদি ফাংশন কলিং ব্যবহার করেন, তাহলে tools
সংযোজন প্রতিফলিত করতে totalTokens
সংখ্যা বৃদ্ধি পায়।
মিথুন এবং অন্যান্য জেনারেটর এআই মডেলগুলি একটি টোকেন নামক একটি গ্রানুলারিটিতে ইনপুট এবং আউটপুট প্রক্রিয়া করে।
টোকেন সম্পর্কে
টোকেনগুলি z
মতো একক অক্ষর বা cat
মতো পুরো শব্দ হতে পারে। দীর্ঘ শব্দগুলি বেশ কয়েকটি টোকনে বিভক্ত হয়। মডেল দ্বারা ব্যবহৃত সমস্ত টোকেনের সেটকে শব্দভাণ্ডার বলা হয় এবং টোকেনগুলিতে পাঠ্য বিভক্ত করার প্রক্রিয়াটিকে টোকেনাইজেশন বলা হয়।
মিথুন মডেলের জন্য, একটি টোকেন প্রায় 4টি অক্ষরের সমতুল্য। 100 টোকেন প্রায় 60-80 ইংরেজি শব্দের সমান।
যখন বিলিং সক্ষম করা হয়, তখন জেমিনি এপিআই -তে কলের ব্যয়টি ইনপুট এবং আউটপুট টোকেনের সংখ্যা দ্বারা অংশে নির্ধারিত হয়, সুতরাং টোকেনগুলি কীভাবে গণনা করা যায় তা জেনে রাখা সহায়ক হতে পারে।
টোকেন গণনা করুন
জেমিনি এপিআই থেকে সমস্ত ইনপুট এবং আউটপুট পাঠ্য, চিত্র ফাইল এবং অন্যান্য অ-পাঠ্য পদ্ধতিগুলি সহ টোকেনাইজড।
আপনি নিম্নলিখিত উপায়ে টোকেন গণনা করতে পারেন:
অনুরোধের ইনপুট সহ
countTokens
কল করুন।
এটি কেবল ইনপুটটিতে মোট টোকেনের সংখ্যা প্রদান করে। আপনার অনুরোধগুলির আকার পরীক্ষা করতে মডেলটিতে ইনপুট প্রেরণের আগে আপনি এই কলটি করতে পারেন।generate_content
কল করার পরেresponse
অবজেক্টেusageMetadata
অ্যাট্রিবিউটটি ব্যবহার করুন।
এটি ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা প্রদান করে:totalTokenCount
।
এটি ইনপুট এবং আউটপুটটির টোকেন গণনাগুলি আলাদাভাবে দেয়:promptTokenCount
(ইনপুট টোকেন) এবংcandidatesTokenCount
(আউটপুট টোকেন)।
পাঠ্য টোকেন গণনা করুন
আপনি যদি কেবল একটি পাঠ্য-কেবলমাত্র ইনপুট দিয়ে countTokens
কল করেন তবে এটি কেবল ইনপুটটিতে পাঠ্যের টোকেন গণনা ( totalTokens
) প্রদান করে। আপনার অনুরোধগুলির আকার পরীক্ষা করতে আপনি generateContent
কল করার আগে এই কলটি করতে পারেন।
আরেকটি বিকল্প হ'ল generateContent
কল করা এবং তারপরে নিম্নলিখিতটি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্যটি ব্যবহার করে:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
) এর পৃথক টোকেন গণনা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
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);
মাল্টি-টার্ন (চ্যাট) টোকেন গণনা করুন
আপনি যদি চ্যাট ইতিহাসের সাথে countTokens
কল করেন তবে এটি চ্যাটের প্রতিটি ভূমিকা ( totalTokens
) থেকে পাঠ্যের মোট টোকেন গণনা প্রদান করে।
আরেকটি বিকল্প হ'ল sendMessage
কল করা এবং তারপরে নিম্নলিখিতটি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্যটি ব্যবহার করা:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
) এর পৃথক টোকেন গণনা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
totalTokenCount
)
আপনার পরবর্তী কথোপকথনের পালাটি কত বড় হবে তা বোঝার জন্য, আপনি যখন 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,
);
মাল্টিমোডাল টোকেন গণনা করুন
জেমিনি এপিআইয়ের সমস্ত ইনপুট পাঠ্য, চিত্র ফাইল এবং অন্যান্য অ-পাঠ্য পদ্ধতিগুলি সহ টোকেনাইজড। জেমিনি এপিআই দ্বারা প্রক্রিয়াজাতকরণের সময় মাল্টিমোডাল ইনপুটটির টোকেনাইজেশন সম্পর্কে নিম্নলিখিত উচ্চ-স্তরের কী পয়েন্টগুলি নোট করুন:
জেমিনি ২.০ সহ, উভয় মাত্রা সহ চিত্রের ইনপুটগুলি <= 384 পিক্সেল 258 টোকেন হিসাবে গণনা করা হয়। এক বা উভয় মাত্রায় বড় চিত্রগুলি 768x768 পিক্সেলের টাইলগুলিতে প্রয়োজনীয় হিসাবে ক্রপযুক্ত এবং স্কেল করা হয়, যার প্রতিটি 258 টোকেন হিসাবে গণনা করা হয়। জেমিনি ২.০ এর আগে, চিত্রগুলি একটি স্থির 258 টোকেন ব্যবহার করে।
ভিডিও এবং অডিও ফাইলগুলি নিম্নলিখিত স্থির হারে টোকেনে রূপান্তরিত হয়: প্রতি সেকেন্ডে 263 টোকেন এবং অডিওতে প্রতি সেকেন্ডে 32 টোকেন এ ভিডিও।
ইমেজ ফাইল
আপনি যদি কোনও পাঠ্য-চিত্র ইনপুট সহ countTokens
কল করেন তবে এটি কেবল ইনপুটটিতে ( totalTokens
) পাঠ্যের সম্মিলিত টোকেন গণনা এবং চিত্রটি দেয়। আপনার অনুরোধগুলির আকার পরীক্ষা করতে আপনি generateContent
কল করার আগে এই কলটি করতে পারেন। আপনি পাঠ্য এবং ফাইলটি আলাদাভাবে option countTokens
কল করতে পারেন।
আরেকটি বিকল্প হ'ল generateContent
কল করা এবং তারপরে নিম্নলিখিতটি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্যটি ব্যবহার করে:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
) এর পৃথক টোকেন গণনা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
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 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);
উদাহরণ যা চিত্রটি ইনলাইন ডেটা হিসাবে সরবরাহ করে:
// 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);
ভিডিও বা অডিও ফাইল
অডিও এবং ভিডিও প্রতিটি নিম্নলিখিত স্থির হারে টোকেনে রূপান্তরিত হয়:
- ভিডিও: প্রতি সেকেন্ডে 263 টোকেন
- অডিও: প্রতি সেকেন্ডে 32 টোকেন
আপনি যদি কোনও পাঠ্য-এবং-ভিডিও/অডিও ইনপুট সহ countTokens
কল করেন তবে এটি কেবল ইনপুটটিতে পাঠ্যের সম্মিলিত টোকেন গণনা এবং ভিডিও/অডিও ফাইলটি প্রদান করে ( totalTokens
)। আপনার অনুরোধগুলির আকার পরীক্ষা করতে আপনি generateContent
কল করার আগে এই কলটি করতে পারেন। আপনি পাঠ্য এবং ফাইলটি আলাদাভাবে option countTokens
কল করতে পারেন।
আরেকটি বিকল্প হ'ল generateContent
কল করা এবং তারপরে নিম্নলিখিতটি পেতে response
অবজেক্টে usageMetadata
বৈশিষ্ট্যটি ব্যবহার করে:
- ইনপুট (
promptTokenCount
) এবং আউটপুট (candidatesTokenCount
) এর পৃথক টোকেন গণনা - ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই মোট টোকেনের সংখ্যা (
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);
সিস্টেমের নির্দেশাবলী এবং সরঞ্জাম
সিস্টেমের নির্দেশাবলী এবং সরঞ্জামগুলি ইনপুটটির জন্য মোট টোকেন গণনার দিকেও গণনা করে।
আপনি যদি সিস্টেমের নির্দেশাবলী ব্যবহার করেন তবে systemInstruction
সংযোজনকে প্রতিফলিত করতে totalTokens
গণনা বৃদ্ধি পায়।
আপনি যদি ফাংশন কলিং ব্যবহার করেন তবে tools
সংযোজন প্রতিফলিত করতে totalTokens
গণনা বৃদ্ধি পায়।
Gemini and other generative AI models process input and output at a granularity called a token .
টোকেন সম্পর্কে
Tokens can be single characters like z
or whole words like cat
. Long words are broken up into several tokens. The set of all tokens used by the model is called the vocabulary, and the process of splitting text into tokens is called tokenization .
মিথুন মডেলের জন্য, একটি টোকেন প্রায় 4টি অক্ষরের সমতুল্য। 100 tokens is equal to about 60-80 English words.
When billing is enabled, the cost of a call to the Gemini API is determined in part by the number of input and output tokens, so knowing how to count tokens can be helpful.
টোকেন গণনা করুন
All input to and output from the Gemini API is tokenized, including text, image files, and other non-text modalities.
You can count tokens in the following ways:
Call
countTokens
with the input of the request.
This returns the total number of tokens in the input only . You can make this call before sending the input to the model to check the size of your requests.Use the
usageMetadata
attribute on theresponse
object after callinggenerate_content
.
This returns the total number of tokens in both the input and the output :totalTokenCount
.
It also returns the token counts of the input and output separately:promptTokenCount
(input tokens) andcandidatesTokenCount
(output tokens).
Count text tokens
If you call countTokens
with a text-only input, it returns the token count of the text in the input only ( totalTokens
). You can make this call before calling generateContent
to check the size of your requests.
Another option is calling generateContent
and then using the usageMetadata
attribute on the response
object to get the following:
- The separate token counts of the input (
promptTokenCount
) and the output (candidatesTokenCount
) - The total number of tokens in both the input and the output (
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);
Count multi-turn (chat) tokens
If you call countTokens
with the chat history, it returns the total token count of the text from each role in the chat ( totalTokens
).
Another option is calling sendMessage
and then using the usageMetadata
attribute on the response
object to get the following:
- The separate token counts of the input (
promptTokenCount
) and the output (candidatesTokenCount
) - The total number of tokens in both the input and the output (
totalTokenCount
)
To understand how big your next conversational turn will be, you need to append it to the history when you call 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,
);
Count multimodal tokens
All input to the Gemini API is tokenized, including text, image files, and other non-text modalities. Note the following high-level key points about tokenization of multimodal input during processing by the Gemini API:
With Gemini 2.0, image inputs with both dimensions <=384 pixels are counted as 258 tokens. Images larger in one or both dimensions are cropped and scaled as needed into tiles of 768x768 pixels, each counted as 258 tokens. Prior to Gemini 2.0, images used a fixed 258 tokens.
Video and audio files are converted to tokens at the following fixed rates: video at 263 tokens per second and audio at 32 tokens per second.
ইমেজ ফাইল
If you call countTokens
with a text-and-image input, it returns the combined token count of the text and the image in the input only ( totalTokens
). You can make this call before calling generateContent
to check the size of your requests. You can also optionally call countTokens
on the text and the file separately.
Another option is calling generateContent
and then using the usageMetadata
attribute on the response
object to get the following:
- The separate token counts of the input (
promptTokenCount
) and the output (candidatesTokenCount
) - The total number of tokens in both the input and the output (
totalTokenCount
)
Example that uses an uploaded image from the 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);
Example that provides the image as inline data:
// 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);
Video or audio files
Audio and video are each converted to tokens at the following fixed rates:
- Video: 263 tokens per second
- Audio: 32 tokens per second
If you call countTokens
with a text-and-video/audio input, it returns the combined token count of the text and the video/audio file in the input only ( totalTokens
). You can make this call before calling generateContent
to check the size of your requests. You can also optionally call countTokens
on the text and the file separately.
Another option is calling generateContent
and then using the usageMetadata
attribute on the response
object to get the following:
- The separate token counts of the input (
promptTokenCount
) and the output (candidatesTokenCount
) - The total number of tokens in both the input and the output (
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);
System instructions and tools
System instructions and tools also count towards the total token count for the input.
If you use system instructions, the totalTokens
count increases to reflect the addition of systemInstruction
.
If you use function calling, the totalTokens
count increases to reflect the addition of tools
.