ক্ষণস্থায়ী টোকেন হল WebSockets-এর মাধ্যমে Gemini API অ্যাক্সেস করার জন্য স্বল্পস্থায়ী প্রমাণীকরণ টোকেন। আপনি যখন ব্যবহারকারীর ডিভাইস থেকে API (একটি ক্লায়েন্ট-টু-সার্ভার বাস্তবায়ন) এর সাথে সরাসরি সংযোগ করছেন তখন সেগুলি নিরাপত্তা বাড়ানোর জন্য ডিজাইন করা হয়েছে। স্ট্যান্ডার্ড API কীগুলির মতো, ক্ষণস্থায়ী টোকেনগুলি ক্লায়েন্ট-সাইড অ্যাপ্লিকেশন যেমন ওয়েব ব্রাউজার বা মোবাইল অ্যাপ থেকে বের করা যেতে পারে। কিন্তু যেহেতু ক্ষণস্থায়ী টোকেনগুলি দ্রুত মেয়াদোত্তীর্ণ হয় এবং সীমাবদ্ধ করা যেতে পারে, তারা উল্লেখযোগ্যভাবে একটি উত্পাদন পরিবেশে নিরাপত্তা ঝুঁকি হ্রাস করে।
কিভাবে ক্ষণস্থায়ী টোকেন কাজ করে
ক্ষণস্থায়ী টোকেনগুলি কীভাবে উচ্চ স্তরে কাজ করে তা এখানে রয়েছে:
- আপনার ক্লায়েন্ট (যেমন ওয়েব অ্যাপ) আপনার ব্যাকএন্ড দিয়ে প্রমাণীকরণ করে।
- আপনার ব্যাকএন্ড জেমিনি API এর প্রভিশনিং পরিষেবা থেকে একটি ক্ষণস্থায়ী টোকেন অনুরোধ করে৷
- Gemini API একটি স্বল্পস্থায়ী টোকেন ইস্যু করে।
- আপনার ব্যাকএন্ড লাইভ API-এ WebSocket সংযোগের জন্য ক্লায়েন্টকে টোকেন পাঠায়। আপনি একটি ক্ষণস্থায়ী টোকেন দিয়ে আপনার API কী অদলবদল করে এটি করতে পারেন।
- ক্লায়েন্ট তারপর টোকেন ব্যবহার করে যেন এটি একটি API কী।
এটি নিরাপত্তা বাড়ায় কারণ বের করা হলেও, টোকেনটি স্বল্পস্থায়ী, একটি দীর্ঘস্থায়ী এপিআই কী ক্লায়েন্ট-সাইডের বিপরীতে। যেহেতু ক্লায়েন্ট সরাসরি জেমিনিতে ডেটা পাঠায়, তাই এটি লেটেন্সিও উন্নত করে এবং রিয়েল টাইম ডেটা প্রক্সি করার জন্য আপনার ব্যাকএন্ড এড়ায়।
একটি ক্ষণস্থায়ী টোকেন তৈরি করুন
মিথুন থেকে কীভাবে একটি ক্ষণস্থায়ী টোকেন পেতে হয় তার একটি সরলীকৃত উদাহরণ এখানে। ডিফল্টরূপে, আপনার কাছে এই অনুরোধের টোকেন ব্যবহার করে নতুন লাইভ API সেশন শুরু করার জন্য 1 মিনিট থাকবে ( newSessionExpireTime
), এবং সেই সংযোগে বার্তা পাঠাতে 30 মিনিট সময় থাকবে ( expireTime
)৷
পাইথন
import datetime
now = datetime.datetime.now(tz=datetime.timezone.utc)
client = genai.Client(
api_key="GEMINI_API_KEY",
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({ apiKey: "GEMINI_API_KEY" });
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
মান সীমাবদ্ধতা, ডিফল্ট এবং অন্যান্য ফিল্ড স্পেকের জন্য, API রেফারেন্স দেখুন। expireTime
সময়সীমার মধ্যে, প্রতি 10 মিনিটে কলটি পুনরায় সংযোগ করার জন্য আপনার sessionResumption
প্রয়োজন হবে (এটি একই টোকেন দিয়ে করা যেতে পারে এমনকি যদি uses: 1
)।
কনফিগারেশনের একটি সেটে একটি ক্ষণস্থায়ী টোকেন লক করাও সম্ভব। এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা আরও উন্নত করতে এবং আপনার সিস্টেমের নির্দেশাবলী সার্ভারের দিকে রাখতে কার্যকর হতে পারে।
পাইথন
client = genai.Client(
api_key="GEMINI_API_KEY",
http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
config = {
'uses': 1,
'live_connect_constraints': {
'model': 'gemini-2.0-flash-live-001',
'config': {
'session_resumption':{},
'temperature':0.7,
'response_modalities':['TEXT']
}
},
'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({ apiKey: "GEMINI_API_KEY" });
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-2.0-flash-live-001',
config: {
sessionResumption: {},
temperature: 0.7,
responseModalities: ['TEXT']
}
},
httpOptions: {
apiVersion: 'v1alpha'
}
}
});
// You'll need to pass the value under token.name back to your client to use it
এছাড়াও আপনি ক্ষেত্রগুলির একটি উপসেট লক করতে পারেন, আরও তথ্যের জন্য SDK ডকুমেন্টেশন দেখুন৷
একটি ক্ষণস্থায়ী টোকেন সহ লাইভ API-এর সাথে সংযোগ করুন৷
এখানে একটি উদাহরণ যা একটি ক্ষণস্থায়ী টোকেনের মাধ্যমে লাইভ API-এর সাথে সংযোগ করে। মনে রাখবেন যে ক্ষণস্থায়ী টোকেনগুলির ব্যবহার শুধুমাত্র ক্লায়েন্ট-টু-সার্ভার বাস্তবায়ন পদ্ধতি অনুসরণ করে এমন অ্যাপ্লিকেশনগুলিকে স্থাপন করার সময় মূল্য যোগ করে।
জাভাস্ক্রিপ্ট
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-2.0-flash-live-001';
const config = { responseModalities: [Modality.TEXT] };
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: { ... },
});
// Send content...
session.close();
}
main();
আরও উদাহরণের জন্য লাইভ API দিয়ে শুরু করুন দেখুন।
সর্বোত্তম অনুশীলন
-
expire_time
প্যারামিটার ব্যবহার করে একটি সংক্ষিপ্ত মেয়াদ শেষ হওয়ার সময়কাল সেট করুন। - টোকেনগুলির মেয়াদ শেষ হয়ে যায়, এর জন্য প্রভিশনিং প্রক্রিয়া পুনরায় শুরু করা প্রয়োজন৷
- আপনার নিজের ব্যাকএন্ডের জন্য নিরাপদ প্রমাণীকরণ যাচাই করুন। ক্ষণস্থায়ী টোকেনগুলি আপনার ব্যাকএন্ড প্রমাণীকরণ পদ্ধতির মতোই নিরাপদ হবে।
- সাধারণত, ব্যাকএন্ড-থেকে-মিথুন সংযোগের জন্য ক্ষণস্থায়ী টোকেন ব্যবহার করা এড়িয়ে চলুন, কারণ এই পথটিকে সাধারণত নিরাপদ বলে মনে করা হয়।
সীমাবদ্ধতা
ক্ষণস্থায়ী টোকেন এই সময়ে শুধুমাত্র লাইভ API এর সাথে সামঞ্জস্যপূর্ণ।
এরপর কি
- আরও তথ্যের জন্য ক্ষণস্থায়ী টোকেনগুলিতে লাইভ API রেফারেন্স পড়ুন।