Ephemeral tokens

अस्थायी टोकन, पुष्टि करने वाले ऐसे टोकन होते हैं जो कम समय के लिए मान्य होते हैं. इनका इस्तेमाल, WebSockets के ज़रिए Gemini API को ऐक्सेस करने के लिए किया जाता है. इन्हें इस तरह से डिज़ाइन किया गया है कि जब उपयोगकर्ता के डिवाइस से सीधे एपीआई से कनेक्ट किया जाता है, तब सुरक्षा को बेहतर बनाया जा सके. इसे क्लाइंट-टू-सर्वर कहा जाता है. स्टैंडर्ड एपीआई कुंजियों की तरह, कुछ समय के लिए मान्य टोकन को क्लाइंट-साइड ऐप्लिकेशन से निकाला जा सकता है. जैसे, वेब ब्राउज़र या मोबाइल ऐप्लिकेशन. हालांकि, कुछ समय के लिए इस्तेमाल किए जाने वाले टोकन की समयसीमा खत्म हो जाती है और इन पर पाबंदी लगाई जा सकती है. इसलिए, ये प्रोडक्शन एनवायरमेंट में सुरक्षा से जुड़े जोखिमों को काफ़ी हद तक कम कर देते हैं.

अस्थायी टोकन कैसे काम करते हैं

यहां बताया गया है कि कुछ समय के लिए मान्य टोकन कैसे काम करते हैं:

  1. आपका क्लाइंट (जैसे, वेब ऐप्लिकेशन) आपके बैकएंड से पुष्टि करता है.
  2. आपका बैकएंड, Gemini API की प्रोविज़निंग सेवा से कुछ समय के लिए मान्य टोकन का अनुरोध करता है.
  3. Gemini API, कुछ समय के लिए इस्तेमाल किया जा सकने वाला टोकन जारी करता है.
  4. आपका बैकएंड, टोकन को क्लाइंट को भेजता है. इससे क्लाइंट, WebSocket कनेक्शन के ज़रिए LiveAPI से कनेक्ट हो पाता है. इसके लिए, अपनी एपीआई कुंजी को कुछ समय के लिए मान्य टोकन से बदलें.
  5. इसके बाद, क्लाइंट इस टोकन का इस्तेमाल एपीआई कुंजी की तरह करता है.

कुछ समय के लिए इस्तेमाल किए जाने वाले टोकन के बारे में खास जानकारी

इससे सुरक्षा बेहतर होती है, क्योंकि अगर टोकन निकाल लिया जाता है, तो भी यह कुछ समय के लिए ही मान्य होता है. वहीं, क्लाइंट-साइड पर डिप्लॉय की गई एपीआई कुंजी लंबे समय तक मान्य रहती है. क्लाइंट, Gemini को सीधे तौर पर डेटा भेजता है. इससे लेटेन्सी भी कम होती है. साथ ही, आपके बैकएंड को रीयल टाइम डेटा को प्रॉक्सी करने की ज़रूरत नहीं पड़ती.

कुछ समय के लिए मान्य टोकन बनाना

Gemini से कुछ समय के लिए मान्य टोकन पाने का एक आसान उदाहरण यहां दिया गया है. डिफ़ॉल्ट रूप से, आपके पास इस अनुरोध (newSessionExpireTime) से मिले टोकन का इस्तेमाल करके, नए Live API सेशन शुरू करने के लिए एक मिनट का समय होगा. साथ ही, उस कनेक्शन (expireTime) पर मैसेज भेजने के लिए 30 मिनट का समय होगा.

Python

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

JavaScript

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 समयसीमा के अंदर, आपको हर 10 मिनट में कॉल को फिर से कनेक्ट करना होगा sessionResumption. इसे उसी टोकन से किया जा सकता है, भले ही uses: 1.

किसी सेट के कॉन्फ़िगरेशन के लिए, कुछ समय के लिए इस्तेमाल होने वाले टोकन को लॉक भी किया जा सकता है. यह आपके ऐप्लिकेशन की सुरक्षा को बेहतर बनाने और सिस्टम के निर्देशों को सर्वर साइड पर रखने के लिए काम आ सकता है.

Python

client = genai.Client(
    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

JavaScript

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-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

फ़ील्ड के सबसेट को भी लॉक किया जा सकता है. ज़्यादा जानकारी के लिए, एसडीके का दस्तावेज़ देखें.

कुछ समय के लिए मान्य टोकन की मदद से Live API से कनेक्ट करना

अस्थायी टोकन मिलने के बाद, इसका इस्तेमाल एपीआई पासकोड की तरह किया जाता है. हालांकि, ध्यान रखें कि यह सिर्फ़ लाइव एपीआई के साथ काम करता है. साथ ही, यह सिर्फ़ एपीआई के v1alpha वर्शन के साथ काम करता है.

ध्यान दें कि कुछ समय के लिए मान्य टोकन का इस्तेमाल सिर्फ़ तब फ़ायदेमंद होता है, जब ऐसे ऐप्लिकेशन डिप्लॉय किए जा रहे हों जो क्लाइंट-टू-सर्वर के तौर पर लागू करने के तरीके का पालन करते हैं.

JavaScript

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();

ज़्यादा उदाहरणों के लिए, Live API का इस्तेमाल शुरू करना लेख देखें.

सबसे सही तरीके

  • expire_time पैरामीटर का इस्तेमाल करके, कम समय के लिए एक्सपायर होने की अवधि सेट करें.
  • टोकन की समयसीमा खत्म हो जाती है. इसलिए, प्रावधान की प्रोसेस को फिर से शुरू करना पड़ता है.
  • अपने बैकएंड के लिए, सुरक्षित तरीके से पुष्टि करने की सुविधा की पुष्टि करें. अस्थायी टोकन, सिर्फ़ आपके बैकएंड की पुष्टि करने के तरीके जितना सुरक्षित होगा.
  • आम तौर पर, बैकएंड से Gemini के कनेक्शन के लिए, कुछ समय के लिए मान्य टोकन का इस्तेमाल न करें. ऐसा इसलिए, क्योंकि इस पाथ को आम तौर पर सुरक्षित माना जाता है.

सीमाएं

फ़िलहाल, कुछ समय के लिए मान्य टोकन सिर्फ़ Live API के साथ काम करते हैं.

आगे क्या करना है

  • ज़्यादा जानकारी के लिए, Live API के रेफ़रंस में जाकर, कुछ समय के लिए उपलब्ध टोकन के बारे में पढ़ें.