জেমিনি এবং অন্যান্য জেনারেটিভ এআই মডেলগুলো টোকেন নামক একটি সূক্ষ্ম স্তরে ইনপুট ও আউটপুট প্রক্রিয়াকরণ করে।
জেমিনি মডেলের ক্ষেত্রে, একটি টোকেন প্রায় ৪টি অক্ষরের সমান। ১০০টি টোকেন প্রায় ৬০-৮০টি ইংরেজি শব্দের সমান।
টোকেন সম্পর্কে
টোকেনগুলো z মতো একক অক্ষর অথবা cat মতো সম্পূর্ণ শব্দ হতে পারে। দীর্ঘ শব্দগুলোকে কয়েকটি টোকেনে বিভক্ত করা হয়। মডেল দ্বারা ব্যবহৃত সমস্ত টোকেনের সেটকে শব্দভান্ডার বলা হয় এবং টেক্সটকে টোকেনে বিভক্ত করার প্রক্রিয়াকে টোকেনাইজেশন বলা হয়।
যখন বিলিং চালু থাকে, তখন জেমিনি এপিআই-তে একটি কলের খরচ আংশিকভাবে ইনপুট এবং আউটপুট টোকেনের সংখ্যার উপর নির্ভর করে, তাই টোকেন গণনা করার পদ্ধতি জানা সহায়ক হতে পারে।
আপনি আমাদের কোলাবে টোকেন গণনা করে দেখতে পারেন।
| | একটি কোলাব নোটবুক ব্যবহার করে দেখুন | গিটহাবে নোটবুকটি দেখুন |
টোকেন গণনা করুন
জেমিনি এপিআই-এর সমস্ত ইনপুট এবং আউটপুট টোকেনাইজ করা হয়, যার মধ্যে টেক্সট, ইমেজ ফাইল এবং অন্যান্য নন-টেক্সট মাধ্যম অন্তর্ভুক্ত।
আপনি নিম্নলিখিত উপায়ে টোকেন গণনা করতে পারেন:
অনুরোধের ইনপুট দিয়ে
count_tokensকল করুন।
এটি শুধুমাত্র ইনপুটে থাকা মোট টোকেনের সংখ্যা ফেরত দেয়। আপনার রিকোয়েস্টের আকার যাচাই করার জন্য, মডেলে ইনপুট পাঠানোর আগে আপনি এই কলটি করতে পারেন।generate_contentকল করার পরresponseঅবজেক্টেusage_metadataঅ্যাট্রিবিউটটি ব্যবহার করুন।
এটি ইনপুট এবং আউটপুট উভয়ের মোট টোকেন সংখ্যা ফেরত দেয়:total_token_count।
এটি ইনপুট এবং আউটপুটের টোকেন সংখ্যাও আলাদাভাবে ফেরত দেয়:prompt_token_count(ইনপুট টোকেন) এবংcandidates_token_count(আউটপুট টোকেন)।আপনি যদি একটি থিঙ্কিং মডেল ব্যবহার করেন, তাহলে চিন্তা প্রক্রিয়ার সময় ব্যবহৃত টোকেনগুলো
thoughts_token_countএ ফেরত আসে। আর আপনি যদি কনটেক্সট ক্যাশিং ব্যবহার করেন, তাহলে ক্যাশ করা টোকেনের সংখ্যাcached_content_token_countএ থাকবে।
টেক্সট টোকেন গণনা করুন
আপনি যদি শুধুমাত্র টেক্সট-ভিত্তিক কোনো ইনপুট দিয়ে count_tokens কল করেন, তাহলে এটি কেবল ইনপুটের টেক্সটটির টোকেন সংখ্যা ( total_tokens ) রিটার্ন করে। আপনার রিকোয়েস্টগুলোর সাইজ পরীক্ষা করার জন্য আপনি generate_content কল করার আগে এই কাজটি করতে পারেন।
আরেকটি উপায় হলো generate_content কল করা এবং তারপর response অবজেক্টে usage_metadata অ্যাট্রিবিউট ব্যবহার করে নিম্নলিখিতটি পাওয়া:
- ইনপুট (
prompt_token_count), ক্যাশ করা কন্টেন্ট (cached_content_token_count) এবং আউটপুট (candidates_token_count)-এর আলাদা টোকেন সংখ্যা। - চিন্তা প্রক্রিয়ার জন্য টোকেন সংখ্যা (
thoughts_token_count) ইনপুট এবং আউটপুট উভয়ের মোট টোকেন সংখ্যা (
total_token_count)
পাইথন
from google import genai
client = genai.Client()
prompt = "The quick brown fox jumps over the lazy dog."
total_tokens = client.models.count_tokens(
model="gemini-3-flash-preview", contents=prompt
)
print("total_tokens: ", total_tokens)
response = client.models.generate_content(
model="gemini-3-flash-preview", contents=prompt
)
print(response.usage_metadata)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "The quick brown fox jumps over the lazy dog.";
async function main() {
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3-flash-preview",
contents: prompt,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: prompt,
});
console.log(generateResponse.usageMetadata);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
// Convert prompt to a slice of *genai.Content using the helper.
contents := []*genai.Content{
genai.NewContentFromText(prompt, genai.RoleUser),
}
countResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
return err
}
fmt.Println("total_tokens:", countResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
```
একাধিক পালা (চ্যাট) টোকেন গণনা করুন
আপনি যদি চ্যাট হিস্ট্রি দিয়ে count_tokens কল করেন, তাহলে এটি চ্যাটের প্রতিটি রোলের টেক্সটের মোট টোকেন সংখ্যা ( total_tokens ) রিটার্ন করে।
আরেকটি উপায় হলো send_message কল করা এবং তারপর response অবজেক্টের usage_metadata অ্যাট্রিবিউট ব্যবহার করে নিম্নলিখিত বিষয়গুলো পাওয়া:
- ইনপুট (
prompt_token_count), ক্যাশ করা কন্টেন্ট (cached_content_token_count) এবং আউটপুট (candidates_token_count)-এর আলাদা টোকেন সংখ্যা। - চিন্তা প্রক্রিয়ার জন্য টোকেন সংখ্যা (
thoughts_token_count) - ইনপুট এবং আউটপুট উভয়ের মোট টোকেন সংখ্যা (
total_token_count)
আপনার পরবর্তী কথোপকথনের পালা কতটা বড় হবে তা বোঝার জন্য, count_tokens কল করার সময় আপনাকে এটি ইতিহাসে যুক্ত করতে হবে।
পাইথন
from google import genai
from google.genai import types
client = genai.Client()
chat = client.chats.create(
model="gemini-3-flash-preview",
history=[
types.Content(
role="user", parts=[types.Part(text="Hi my name is Bob")]
),
types.Content(role="model", parts=[types.Part(text="Hi Bob!")]),
],
)
print(
client.models.count_tokens(
model="gemini-3-flash-preview", contents=chat.get_history()
)
)
response = chat.send_message(
message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)
extra = types.UserContent(
parts=[
types.Part(
text="What is the meaning of life?",
)
]
)
history = [*chat.get_history(), extra]
print(client.models.count_tokens(model="gemini-3-flash-preview", contents=history))
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
async function main() {
const history = [
{ role: "user", parts: [{ text: "Hi my name is Bob" }] },
{ role: "model", parts: [{ text: "Hi Bob!" }] },
];
const chat = ai.chats.create({
model: "gemini-3-flash-preview",
history: history,
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3-flash-preview",
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);
const extraMessage = {
role: "user",
parts: [{ text: "What is the meaning of life?" }],
};
const combinedHistory = [...chat.getHistory(), extraMessage];
const combinedCountTokensResponse = await ai.models.countTokens({
model: "gemini-3-flash-preview",
contents: combinedHistory,
});
console.log(
"Combined history token count:",
combinedCountTokensResponse.totalTokens,
);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
history := []*genai.Content{
{Role: genai.RoleUser, Parts: []*genai.Part({Text: "Hi my name is Bob"})},
{Role: genai.RoleModel, Parts: []*genai.Part({Text: "Hi Bob!"})},
}
chat, err := client.Chats.Create(ctx, "gemini-3-flash-preview", nil, history)
if err != nil {
log.Fatal(err)
}
firstTokenResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", chat.History(false), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(firstTokenResp.TotalTokens)
resp, err := chat.SendMessage(ctx, genai.NewPartFromText("In one sentence, explain how a computer works to a young child."))
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", resp.UsageMetadata)
extra := genai.NewContentFromText("What is the meaning of life?", genai.RoleUser)
hist := chat.History(false)
hist = append(hist, extra)
secondTokenResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", hist, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(secondTokenResp.TotalTokens)
মাল্টিমোডাল টোকেন গণনা করুন
জেমিনি এপিআই-তে আসা সমস্ত ইনপুট টোকেনাইজ করা হয়, যার মধ্যে টেক্সট, ইমেজ ফাইল এবং অন্যান্য নন-টেক্সট মাধ্যম অন্তর্ভুক্ত। জেমিনি এপিআই দ্বারা প্রক্রিয়াকরণের সময় মাল্টিমোডাল ইনপুটের টোকেনাইজেশন সম্পর্কে নিম্নলিখিত উচ্চ-স্তরের মূল বিষয়গুলো লক্ষ্য করুন:
যেসব ছবির উভয় মাত্রা ৩৮৪ পিক্সেল বা তার কম, সেগুলোকে ২৫৮টি টোকেন হিসেবে গণনা করা হয়। এর চেয়ে বড় বা এক বা উভয় মাত্রার ছবি প্রয়োজন অনুযায়ী ক্রপ ও স্কেল করে ৭৬৮x৭৬৮ পিক্সেলের টাইলে পরিণত করা হয়, যার প্রতিটি ২৫৮টি টোকেন হিসেবে গণনা করা হয়।
ভিডিও এবং অডিও ফাইলগুলো নিম্নলিখিত নির্দিষ্ট হারে টোকেনে রূপান্তরিত হয়: ভিডিওর জন্য প্রতি সেকেন্ডে ২৬৩ টোকেন এবং অডিওর জন্য প্রতি সেকেন্ডে ৩২ টোকেন।
মিডিয়া রেজোলিউশন
জেমিনি ৩ মডেলগুলো media_resolution প্যারামিটারের মাধ্যমে মাল্টিমোডাল ভিশন প্রসেসিংয়ের ওপর সূক্ষ্ম নিয়ন্ত্রণ নিয়ে আসে। media_resolution প্যারামিটারটি প্রতিটি ইনপুট ইমেজ বা ভিডিও ফ্রেমের জন্য বরাদ্দকৃত টোকেনের সর্বোচ্চ সংখ্যা নির্ধারণ করে। উচ্চতর রেজোলিউশন সূক্ষ্ম লেখা পড়া বা ছোট ছোট বিবরণ শনাক্ত করার ক্ষেত্রে মডেলের সক্ষমতা বাড়ায়, কিন্তু এর ফলে টোকেনের ব্যবহার এবং ল্যাটেন্সি বৃদ্ধি পায়।
প্যারামিটারটি এবং এটি কীভাবে টোকেন গণনাকে প্রভাবিত করতে পারে সে সম্পর্কে আরও বিস্তারিত জানতে মিডিয়া রেজোলিউশন গাইডটি দেখুন।
ছবির ফাইল
আপনি যদি একটি টেক্সট ও ইমেজ ইনপুট দিয়ে count_tokens কল করেন, তাহলে এটি শুধুমাত্র ইনপুটের টেক্সট এবং ইমেজের সম্মিলিত টোকেন সংখ্যা ( total_tokens ) রিটার্ন করে। আপনার রিকোয়েস্টের সাইজ পরীক্ষা করার জন্য আপনি generate_content কল করার আগে এই কলটি করতে পারেন। এছাড়াও, আপনি চাইলে টেক্সট এবং ফাইলের জন্য আলাদাভাবে count_tokens কল করতে পারেন।
আরেকটি উপায় হলো generate_content কল করা এবং তারপর response অবজেক্টে usage_metadata অ্যাট্রিবিউট ব্যবহার করে নিম্নলিখিতটি পাওয়া:
- ইনপুট (
prompt_token_count), ক্যাশ করা কন্টেন্ট (cached_content_token_count) এবং আউটপুট (candidates_token_count)-এর আলাদা টোকেন সংখ্যা। - চিন্তা প্রক্রিয়ার জন্য টোকেন সংখ্যা (
thoughts_token_count) - ইনপুট এবং আউটপুট উভয়ের মোট টোকেন সংখ্যা (
total_token_count)
ফাইল এপিআই থেকে আপলোড করা ছবি ব্যবহার করে এমন একটি উদাহরণ:
পাইথন
from google import genai
client = genai.Client()
prompt = "Tell me about this image"
your_image_file = client.files.upload(file=media / "organ.jpg")
print(
client.models.count_tokens(
model="gemini-3-flash-preview", contents=[prompt, your_image_file]
)
)
response = client.models.generate_content(
model="gemini-3-flash-preview", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";
async function main() {
const organ = await ai.files.upload({
file: path.join(media, "organ.jpg"),
config: { mimeType: "image/jpeg" },
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3-flash-preview",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
file, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "organ.jpg"),
&genai.UploadFileConfig{
MIMEType : "image/jpeg",
},
)
if err != nil {
log.Fatal(err)
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this image"),
genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
ইনলাইন ডেটা হিসাবে ছবি প্রদানের উদাহরণ:
পাইথন
from google import genai
import PIL.Image
client = genai.Client()
prompt = "Tell me about this image"
your_image_file = PIL.Image.open(media / "organ.jpg")
print(
client.models.count_tokens(
model="gemini-3-flash-preview", contents=[prompt, your_image_file]
)
)
response = client.models.generate_content(
model="gemini-3-flash-preview", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";
const imageBuffer = fs.readFileSync(path.join(media, "organ.jpg"));
const imageBase64 = imageBuffer.toString("base64");
const contents = createUserContent([
prompt,
createPartFromBase64(imageBase64, "image/jpeg"),
]);
async function main() {
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3-flash-preview",
contents: contents,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: contents,
});
console.log(generateResponse.usageMetadata);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
imageBytes, err := os.ReadFile("organ.jpg")
if err != nil {
log.Fatalf("Failed to read image file: %v", err)
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this image"),
{
InlineData: &genai.Blob{
MIMEType: "image/jpeg",
Data: imageBytes,
},
},
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
ভিডিও বা অডিও ফাইল
অডিও এবং ভিডিও প্রত্যেকটি নিম্নলিখিত নির্দিষ্ট হারে টোকেনে রূপান্তরিত হয়:
- ভিডিও: প্রতি সেকেন্ডে ২৬৩ টোকেন
- অডিও: প্রতি সেকেন্ডে ৩২টি টোকেন
আপনি যদি একটি টেক্সট এবং ভিডিও/অডিও ইনপুট দিয়ে count_tokens কল করেন, তাহলে এটি শুধুমাত্র ইনপুটে থাকা টেক্সট এবং ভিডিও/অডিও ফাইলের সম্মিলিত টোকেন সংখ্যা ( total_tokens ) রিটার্ন করে। আপনার রিকোয়েস্টের সাইজ পরীক্ষা করার জন্য আপনি generate_content কল করার আগে এই কলটি করতে পারেন। এছাড়াও, আপনি চাইলে টেক্সট এবং ফাইলের জন্য আলাদাভাবেও count_tokens কল করতে পারেন।
আরেকটি উপায় হলো generate_content কল করা এবং তারপর response অবজেক্টে usage_metadata অ্যাট্রিবিউট ব্যবহার করে নিম্নলিখিতটি পাওয়া:
- ইনপুট (
prompt_token_count), ক্যাশ করা কন্টেন্ট (cached_content_token_count) এবং আউটপুট (candidates_token_count)-এর আলাদা টোকেন সংখ্যা। - চিন্তা প্রক্রিয়ার জন্য টোকেন সংখ্যা (
thoughts_token_count) ইনপুট এবং আউটপুট উভয়ের মোট টোকেন সংখ্যা (
total_token_count)।
পাইথন
from google import genai
import time
client = genai.Client()
prompt = "Tell me about this video"
your_file = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
while not your_file.state or your_file.state.name != "ACTIVE":
print("Processing video...")
print("File state:", your_file.state)
time.sleep(5)
your_file = client.files.get(name=your_file.name)
print(
client.models.count_tokens(
model="gemini-3-flash-preview", contents=[prompt, your_file]
)
)
response = client.models.generate_content(
model="gemini-3-flash-preview", contents=[prompt, your_file]
)
print(response.usage_metadata)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this video";
async function main() {
let videoFile = await ai.files.upload({
file: path.join(media, "Big_Buck_Bunny.mp4"),
config: { mimeType: "video/mp4" },
});
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-3-flash-preview",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
file, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
&genai.UploadFileConfig{
MIMEType : "video/mp4",
},
)
if err != nil {
log.Fatal(err)
}
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
fmt.Println("Processing video...")
fmt.Println("File state:", file.State)
time.Sleep(5 * time.Second)
file, err = client.Files.Get(ctx, file.Name, nil)
if err != nil {
log.Fatal(err)
}
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this video"),
genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal video/audio token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3-flash-preview", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
প্রসঙ্গ উইন্ডো
জেমিনি এপিআই-এর মাধ্যমে উপলব্ধ মডেলগুলির কনটেক্সট উইন্ডো থাকে, যা টোকেনে পরিমাপ করা হয়। কনটেক্সট উইন্ডো নির্ধারণ করে যে আপনি কী পরিমাণ ইনপুট দিতে পারবেন এবং মডেলটি কী পরিমাণ আউটপুট তৈরি করতে পারবে। আপনি models.get এন্ডপয়েন্ট কল করে অথবা মডেলের ডকুমেন্টেশন দেখে কনটেক্সট উইন্ডোর আকার নির্ধারণ করতে পারেন।
পাইথন
from google import genai
client = genai.Client()
model_info = client.models.get(model="gemini-3-flash-preview")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
async function main() {
const modelInfo = await ai.models.get({model: 'gemini-3-flash-preview'});
console.log(modelInfo.inputTokenLimit);
console.log(modelInfo.outputTokenLimit);
}
await main();
যান
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
modelInfo, err := client.ModelInfo(ctx, "models/gemini-3-flash-preview")
if err != nil {
log.Fatal(err)
}
fmt.Println("input token limit:", modelInfo.InputTokenLimit)
fmt.Println("output token limit:", modelInfo.OutputTokenLimit)
একটি কোলাব নোটবুক ব্যবহার করে দেখুন
গিটহাবে নোটবুকটি দেখুন