এফিমিরাল টোকেন হলো ওয়েবসকেটের মাধ্যমে জেমিনি এপিআই অ্যাক্সেস করার জন্য ব্যবহৃত স্বল্পস্থায়ী অথেনটিকেশন টোকেন। যখন আপনি ব্যবহারকারীর ডিভাইস থেকে সরাসরি এপিআই-তে সংযোগ স্থাপন করেন (একটি ক্লায়েন্ট-টু-সার্ভার বাস্তবায়ন), তখন নিরাপত্তা বাড়ানোর জন্য এগুলো ডিজাইন করা হয়েছে। সাধারণ এপিআই কী-এর মতোই, এফিমিরাল টোকেনগুলো ওয়েব ব্রাউজার বা মোবাইল অ্যাপের মতো ক্লায়েন্ট-সাইড অ্যাপ্লিকেশন থেকে সংগ্রহ করা যায়। কিন্তু যেহেতু এফিমিরাল টোকেনগুলোর মেয়াদ দ্রুত শেষ হয়ে যায় এবং এগুলোকে সীমাবদ্ধ করা যায়, তাই প্রোডাকশন পরিবেশে এগুলো নিরাপত্তা ঝুঁকি উল্লেখযোগ্যভাবে কমিয়ে দেয়। এপিআই কী-এর নিরাপত্তা বাড়ানোর জন্য ক্লায়েন্ট-সাইড অ্যাপ্লিকেশন থেকে সরাসরি লাইভ এপিআই অ্যাক্সেস করার সময় আপনার এগুলো ব্যবহার করা উচিত।
ক্ষণস্থায়ী টোকেনগুলি কীভাবে কাজ করে
সাধারণভাবে ক্ষণস্থায়ী টোকেনগুলো যেভাবে কাজ করে তা নিচে দেওয়া হলো:
- আপনার ক্লায়েন্ট (যেমন ওয়েব অ্যাপ) আপনার ব্যাকএন্ডের সাথে প্রমাণীকরণ করে।
- আপনার ব্যাকএন্ড জেমিনি এপিআই-এর প্রোভিশনিং সার্ভিস থেকে একটি ক্ষণস্থায়ী টোকেনের জন্য অনুরোধ করে।
- জেমিনি এপিআই একটি স্বল্পস্থায়ী টোকেন ইস্যু করে।
- আপনার ব্যাকএন্ড লাইভ এপিআই-এর সাথে ওয়েবসকেট সংযোগের জন্য ক্লায়েন্টের কাছে টোকেন পাঠায়। আপনি আপনার এপিআই কী-কে একটি ক্ষণস্থায়ী টোকেন দিয়ে পরিবর্তন করে এটি করতে পারেন।
- এরপর ক্লায়েন্ট টোকেনটিকে একটি এপিআই কী-এর মতো ব্যবহার করে।

এটি নিরাপত্তা বাড়ায়, কারণ টোকেনটি বের করে নেওয়া হলেও এর স্থায়িত্ব কম থাকে, যা ক্লায়েন্ট-সাইডে ব্যবহৃত একটি দীর্ঘস্থায়ী এপিআই কী-এর মতো নয়। যেহেতু ক্লায়েন্ট সরাসরি জেমিনিতে ডেটা পাঠায়, তাই এটি ল্যাটেন্সিও উন্নত করে এবং আপনার ব্যাকএন্ডগুলোকে রিয়েল-টাইম ডেটা প্রক্সি করার প্রয়োজন থেকে বিরত রাখে।
একটি ক্ষণস্থায়ী টোকেন তৈরি করুন
জেমিনি থেকে কীভাবে একটি ক্ষণস্থায়ী টোকেন পাওয়া যায় তার একটি সরলীকৃত উদাহরণ এখানে দেওয়া হলো। ডিফল্টরূপে, এই অনুরোধ থেকে প্রাপ্ত টোকেন ব্যবহার করে নতুন লাইভ এপিআই সেশন শুরু করার জন্য আপনি ১ মিনিট ( newSessionExpireTime ) এবং সেই সংযোগের মাধ্যমে বার্তা পাঠানোর জন্য ৩০ মিনিট ( expireTime ) সময় পাবেন।
পাইথন
import datetime
now = datetime.datetime.now(tz=datetime.timezone.utc)
client = genai.Client(
http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
config = {
'uses': 1, # The ephemeral token can only be used to start a single session
'expire_time': now + datetime.timedelta(minutes=30), # Default is 30 minutes in the future
# 'expire_time': '2025-05-17T00:00:00Z', # Accepts isoformat.
'new_session_expire_time': now + datetime.timedelta(minutes=1), # Default 1 minute in the future
'http_options': {'api_version': 'v1alpha'},
}
)
# You'll need to pass the value under token.name back to your client to use it
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token: AuthToken = await client.authTokens.create({
config: {
uses: 1, // The default
expireTime: expireTime, // Default is 30 mins
newSessionExpireTime: new Date(Date.now() + (1 * 60 * 1000)), // Default 1 minute in the future
httpOptions: {apiVersion: 'v1alpha'},
},
});
expireTime মানের সীমাবদ্ধতা, ডিফল্ট এবং অন্যান্য ফিল্ড স্পেসিফিকেশনের জন্য, এপিআই রেফারেন্স দেখুন। expireTime সময়সীমার মধ্যে, প্রতি ১০ মিনিট পর পর কলটি পুনরায় সংযোগ করার জন্য আপনার sessionResumption প্রয়োজন হবে (এটি একই টোকেন দিয়ে করা যেতে পারে, এমনকি যদি uses: 1 )।
একটি ক্ষণস্থায়ী টোকেনকে কিছু নির্দিষ্ট কনফিগারেশনের সাথে আবদ্ধ করাও সম্ভব। এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা আরও উন্নত করতে এবং আপনার সিস্টেমের নির্দেশাবলী সার্ভার সাইডে রাখতে সহায়ক হতে পারে।
পাইথন
client = genai.Client(
http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
config = {
'uses': 1,
'live_connect_constraints': {
'model': 'gemini-3.1-flash-live-preview',
'config': {
'session_resumption':{},
'temperature':0.7,
'response_modalities':['AUDIO']
}
},
'http_options': {'api_version': 'v1alpha'},
}
)
# You'll need to pass the value under token.name back to your client to use it
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token = await client.authTokens.create({
config: {
uses: 1, // The default
expireTime: expireTime,
liveConnectConstraints: {
model: 'gemini-3.1-flash-live-preview',
config: {
sessionResumption: {},
temperature: 0.7,
responseModalities: ['AUDIO']
}
},
httpOptions: {
apiVersion: 'v1alpha'
}
}
});
// You'll need to pass the value under token.name back to your client to use it
আপনি চাইলে কিছু নির্দিষ্ট ফিল্ডও লক করতে পারেন, আরও তথ্যের জন্য SDK ডকুমেন্টেশন দেখুন।
একটি ক্ষণস্থায়ী টোকেন দিয়ে লাইভ এপিআই-এর সাথে সংযোগ করুন
একবার আপনি একটি ক্ষণস্থায়ী টোকেন পেয়ে গেলে, আপনি এটিকে একটি এপিআই কী-এর মতোই ব্যবহার করতে পারবেন (কিন্তু মনে রাখবেন, এটি শুধুমাত্র লাইভ এপিআই-এর জন্য এবং শুধুমাত্র এপিআই-এর v1alpha সংস্করণের সাথেই কাজ করে)।
যেসব অ্যাপ্লিকেশন ক্লায়েন্ট-টু-সার্ভার বাস্তবায়ন পদ্ধতি অনুসরণ করে, শুধুমাত্র সেগুলোর ডেপ্লয়মেন্টের ক্ষেত্রেই ক্ষণস্থায়ী টোকেনের ব্যবহার বাড়তি সুবিধা দেয়।
জাভাস্ক্রিপ্ট
import { GoogleGenAI, Modality } from '@google/genai';
// Use the token generated in the "Create an ephemeral token" section here
const ai = new GoogleGenAI({
apiKey: token.name
});
const model = 'gemini-3.1-flash-live-preview';
const config = { responseModalities: [Modality.AUDIO] };
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: { ... },
});
// Send content...
session.close();
}
main();
আরও উদাহরণের জন্য লাইভ এপিআই দিয়ে শুরু করুন দেখুন।
সর্বোত্তম অনুশীলন
-
expire_timeপ্যারামিটার ব্যবহার করে একটি স্বল্প মেয়াদ নির্ধারণ করুন। - টোকেনগুলির মেয়াদ শেষ হয়ে গেলে প্রোভিশনিং প্রক্রিয়াটি পুনরায় শুরু করতে হবে।
- আপনার নিজের ব্যাকএন্ডের জন্য নিরাপদ প্রমাণীকরণ যাচাই করুন। ক্ষণস্থায়ী টোকেনগুলো কেবল আপনার ব্যাকএন্ডের প্রমাণীকরণ পদ্ধতির মতোই সুরক্ষিত হবে।
- সাধারণত, ব্যাকএন্ড থেকে জেমিনিতে সংযোগের জন্য ক্ষণস্থায়ী টোকেন ব্যবহার করা এড়িয়ে চলুন, কারণ এই পথটি সাধারণত নিরাপদ বলে বিবেচিত হয়।
সীমাবদ্ধতা
বর্তমানে ক্ষণস্থায়ী টোকেনগুলো শুধুমাত্র লাইভ এপিআই-এর সাথেই সামঞ্জস্যপূর্ণ।
এরপর কী?
- আরও তথ্যের জন্য ক্ষণস্থায়ী টোকেন সম্পর্কিত লাইভ এপিআই রেফারেন্সটি পড়ুন।