Live API - WebSockets API reference

Live API एक स्टेटफ़ुल एपीआई है, जो WebSockets का इस्तेमाल करता है. इस सेक्शन में, आपको WebSockets API के बारे में ज़्यादा जानकारी मिलेगी.

सेशन

WebSocket कनेक्शन, क्लाइंट और Gemini सर्वर के बीच एक सेशन बनाता है. जब कोई क्लाइंट नया कनेक्शन शुरू करता है, तो सेशन सर्वर के साथ ये काम करने के लिए मैसेज भेज सकता है:

  • Gemini के सर्वर पर टेक्स्ट, ऑडियो या वीडियो भेजा जाता है.
  • Gemini सर्वर से ऑडियो, टेक्स्ट या फ़ंक्शन कॉल के अनुरोध पाना.

WebSocket कनेक्शन

सेशन शुरू करने के लिए, इस वेबसॉकेट एंडपॉइंट से कनेक्ट करें:

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent

सेशन का कॉन्फ़िगरेशन

WebSocket कनेक्शन सेट अप करने के बाद भेजा गया शुरुआती मैसेज, सेशन कॉन्फ़िगरेशन सेट करता है. इसमें मॉडल, जनरेशन पैरामीटर, सिस्टम के निर्देश, और टूल शामिल होते हैं.

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

कॉन्फ़िगरेशन का यह उदाहरण देखें. ध्यान दें कि एसडीके में नाम के केस अलग-अलग हो सकते हैं. Python SDK टूल के कॉन्फ़िगरेशन के विकल्प यहां देखे जा सकते हैं.


{
  "model": string,
  "generationConfig": {
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "temperature": number,
    "topP": number,
    "topK": integer,
    "presencePenalty": number,
    "frequencyPenalty": number,
    "responseModalities": [string],
    "speechConfig": object,
    "mediaResolution": object,
    "translationConfig": object
  },
  "systemInstruction": string,
  "tools": [object]
}

एपीआई फ़ील्ड के बारे में ज़्यादा जानने के लिए, generationConfig देखें.

मैसेज भेजें

WebSocket कनेक्शन पर मैसेज भेजने के लिए, क्लाइंट को खुले हुए WebSocket कनेक्शन पर JSON ऑब्जेक्ट भेजना होगा. JSON ऑब्जेक्ट में, यहां दिए गए ऑब्जेक्ट सेट में से सिर्फ़ एक फ़ील्ड होना चाहिए:


{
  "setup": BidiGenerateContentSetup,
  "clientContent": BidiGenerateContentClientContent,
  "realtimeInput": BidiGenerateContentRealtimeInput,
  "toolResponse": BidiGenerateContentToolResponse
}

इस्तेमाल किए जा सकने वाले क्लाइंट मैसेज

नीचे दी गई टेबल में, क्लाइंट के मैसेज देखने की सुविधा के बारे में बताया गया है:

मैसेज ब्यौरा
BidiGenerateContentSetup पहले मैसेज में भेजे जाने वाले सेशन का कॉन्फ़िगरेशन
BidiGenerateContentClientContent क्लाइंट से डिलीवर की गई मौजूदा बातचीत का इंक्रीमेंटल कॉन्टेंट अपडेट
BidiGenerateContentRealtimeInput ऑडियो, वीडियो या टेक्स्ट इनपुट को रीयल टाइम में प्रोसेस करना
BidiGenerateContentToolResponse सर्वर से मिले ToolCallMessage का जवाब

मैसेज पाना

Gemini से मैसेज पाने के लिए, WebSocket 'message' इवेंट सुनें. इसके बाद, सर्वर से मिले मैसेज की परिभाषा के हिसाब से नतीजे को पार्स करें.

यहां दिया गया उदाहरण देखें:

async with client.aio.live.connect(model='...', config=config) as session:
    await session.send(input='Hello world!', end_of_turn=True)
    async for message in session.receive():
        print(message)

सर्वर मैसेज में usageMetadata फ़ील्ड हो सकता है. हालांकि, इसमें BidiGenerateContentServerMessage मैसेज के अन्य फ़ील्ड में से सिर्फ़ एक फ़ील्ड शामिल होगा. (messageType यूनियन को JSON में नहीं दिखाया जाता है. इसलिए, यह फ़ील्ड मैसेज के टॉप-लेवल पर दिखेगा.)

मैसेज और इवेंट

ActivityEnd

इस टाइप में कोई फ़ील्ड नहीं है.

यह कुकी, उपयोगकर्ता गतिविधि के खत्म होने का समय मार्क करती है.

ActivityHandling

उपयोगकर्ता गतिविधि को मैनेज करने के अलग-अलग तरीके.

Enums
ACTIVITY_HANDLING_UNSPECIFIED अगर कोई जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तरीका START_OF_ACTIVITY_INTERRUPTS होता है.
START_OF_ACTIVITY_INTERRUPTS अगर वैल्यू सही है, तो गतिविधि शुरू होने पर मॉडल की प्रतिक्रिया में रुकावट आएगी. इसे "बार्ज इन" भी कहा जाता है. बातचीत में रुकावट आने पर, मॉडल का मौजूदा जवाब बीच में ही रुक जाएगा. यह डिफ़ॉल्ट व्यवहार है.
NO_INTERRUPTION मॉडल के जवाब में कोई रुकावट नहीं आएगी.

ActivityStart

इस टाइप में कोई फ़ील्ड नहीं है.

यह कुकी, उपयोगकर्ता गतिविधि की शुरुआत को मार्क करती है.

AudioTranscriptionConfig

ऑडियो को टेक्स्ट में बदलने की सुविधा का कॉन्फ़िगरेशन.

फ़ील्ड
languageCodes[]

string

ज़रूरी नहीं. BCP-47 भाषा कोड, जो ऑडियो में मौजूद भाषाओं के बारे में जानकारी देते हैं. अगर इसे शामिल नहीं किया जाता है या यह खाली है, तो भाषा की अपने-आप पहचान होने की सुविधा डिफ़ॉल्ट रूप से चालू हो जाती है.

customVocabulary[]

string

ज़रूरी नहीं. कस्टम शब्दावली के वाक्यांशों की सूची. इससे स्पीच रिकग्निशन मॉडल को खास शब्दों (प्रॉडक्ट के नाम, प्रॉपर नाउन, तकनीकी शब्द) को पहचानने में मदद मिलती है.

wordTimestamp

bool

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

diarization

bool

ज़रूरी नहीं. यह कुकी, स्पीकर डायराइज़ेशन की सुविधा को कॉन्फ़िगर करती है.

mode

Mode

ज़रूरी नहीं. यह कुकी, ट्रांसक्रिप्शन मोड को कॉन्फ़िगर करती है. इस्तेमाल की जा सकने वाली वैल्यू: VERBATIM, SMART. अगर इसे तय नहीं किया जाता है, तो डिफ़ॉल्ट रूप से VERBATIM ट्रांसक्रिप्शन लागू होता है. SMART मोड में, मॉडल इन कामों को करता है: बोलने में होने वाली रुकावटों को हटाना (जैसे, फ़िलर शब्दों, दोहराव, और गलत शुरुआत को हटाना), व्याकरण से जुड़ी मामूली गड़बड़ियों को ठीक करना, अपने-आप फ़ॉर्मैट करना (पैराग्राफ़, बुलेट पॉइंट, नंबर वाली सूचियां), और उपयोगकर्ता की मामूली बदलावों को लागू करना (लाइन में मौजूद शब्दों को खुद से ठीक करना). टाइमस्टैंप और डायराइज़ेशन, मोड SMART के साथ काम नहीं करते.

मोड

बोली को लेख में बदलने का मोड.

Enums
MODE_UNSPECIFIED ट्रांसक्रिप्शन मोड की जानकारी नहीं दी गई है.
VERBATIM बोले गए शब्दों को हूबहू टेक्स्ट में बदलने का मोड.
SMART स्मार्ट ट्रांसक्रिप्शन मोड.

AutomaticActivityDetection

यह कुकी, गतिविधि का अपने-आप पता लगने की सुविधा को कॉन्फ़िगर करती है.

फ़ील्ड
disabled

bool

ज़रूरी नहीं. अगर यह सेटिंग चालू है (डिफ़ॉल्ट रूप से चालू रहती है), तो आवाज़ और टेक्स्ट इनपुट का पता चलने पर, उसे गतिविधि के तौर पर गिना जाता है. अगर यह सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे.

startOfSpeechSensitivity

StartSensitivity

ज़रूरी नहीं. इससे यह तय होता है कि बोली का पता चलने की संभावना कितनी है.

prefixPaddingMs

int32

ज़रूरी नहीं. बोले जा रहे शब्दों को टेक्स्ट में बदलने की सुविधा शुरू होने से पहले, बोले गए शब्दों की ज़रूरी अवधि. इस वैल्यू के कम होने पर, आवाज़ का पता लगाने की सुविधा ज़्यादा संवेदनशील हो जाती है. साथ ही, कम समय तक बोली गई आवाज़ को भी पहचाना जा सकता है. हालांकि, इससे फ़ॉल्स पॉज़िटिव की संभावना भी बढ़ जाती है.

endOfSpeechSensitivity

EndSensitivity

ज़रूरी नहीं. इससे यह तय होता है कि पहचानी गई आवाज़ के खत्म होने की संभावना कितनी है.

silenceDurationMs

int32

ज़रूरी नहीं. बातचीत खत्म होने से पहले, बिना आवाज़ वाली गतिविधि (जैसे, चुप्पी) का पता चलने पर, उसकी ज़रूरी अवधि. इस वैल्यू के ज़्यादा होने पर, उपयोगकर्ता की गतिविधि में रुकावट डाले बिना, स्पीच के बीच ज़्यादा समय तक रुका जा सकता है. हालांकि, इससे मॉडल की लेटेन्सी बढ़ जाएगी.

BidiGenerateContentClientContent

क्लाइंट से मिली मौजूदा बातचीत का इंक्रीमेंटल अपडेट. यहां मौजूद पूरा कॉन्टेंट, बातचीत के इतिहास में बिना किसी शर्त के जोड़ दिया जाता है. साथ ही, इसका इस्तेमाल मॉडल को प्रॉम्प्ट देने के लिए किया जाता है, ताकि वह कॉन्टेंट जनरेट कर सके.

यहां कोई मैसेज टाइप करने पर, मॉडल के जनरेट किए जा रहे मौजूदा जवाब में रुकावट आएगी.

फ़ील्ड
turns[]

Content

ज़रूरी नहीं. मॉडल के साथ मौजूदा बातचीत में जोड़ा गया कॉन्टेंट.

सिंगल-टर्न क्वेरी के लिए, यह एक इंस्टेंस होता है. सिलसिलेवार बातचीत वाली क्वेरी के लिए, यह दोहराया गया फ़ील्ड है. इसमें बातचीत का इतिहास और हाल ही का अनुरोध शामिल होता है.

turnComplete

bool

ज़रूरी नहीं. अगर यह वैल्यू सही है, तो इसका मतलब है कि सर्वर को, फ़िलहाल इकट्ठा किए गए प्रॉम्प्ट से कॉन्टेंट जनरेट करना शुरू करना चाहिए. इसके अलावा, सर्वर जनरेट करने की प्रोसेस शुरू करने से पहले, अन्य मैसेज का इंतज़ार करता है.

BidiGenerateContentRealtimeInput

उपयोगकर्ता का इनपुट, जिसे रीयल टाइम में भेजा जाता है.

ऑडियो, वीडियो, और टेक्स्ट जैसे अलग-अलग फ़ॉर्मैट को एक साथ स्ट्रीम किया जाता है. इन स्ट्रीम में वीडियो के क्रम की कोई गारंटी नहीं है.

यह BidiGenerateContentClientContent से इन मामलों में अलग है:

  • इसे मॉडल जनरेट करने के दौरान, बिना किसी रुकावट के लगातार भेजा जा सकता है.
  • अगर BidiGenerateContentClientContent और BidiGenerateContentRealtimeInput के बीच इंटरलीव किए गए डेटा को मिक्स करने की ज़रूरत होती है, तो सर्वर सबसे अच्छा जवाब देने के लिए ऑप्टिमाइज़ करने की कोशिश करता है. हालांकि, इसकी कोई गारंटी नहीं है.
  • टर्न के खत्म होने के बारे में साफ़ तौर पर नहीं बताया गया है. हालांकि, इसे उपयोगकर्ता की गतिविधि से पता लगाया जाता है. उदाहरण के लिए, बातचीत खत्म होने पर.
  • टर्न खत्म होने से पहले भी, डेटा को धीरे-धीरे प्रोसेस किया जाता है, ताकि मॉडल से जवाब मिलने में कम समय लगे.
फ़ील्ड
mediaChunks[]

Blob

ज़रूरी नहीं. मीडिया इनपुट के लिए, इनलाइन किए गए बाइट का डेटा. एक से ज़्यादा mediaChunks का इस्तेमाल नहीं किया जा सकता. पहले को छोड़कर बाकी सभी को अनदेखा कर दिया जाएगा.

अब सेवा में नहीं है: इसके बजाय, audio, video या text में से किसी एक का इस्तेमाल करें.

audio

Blob

ज़रूरी नहीं. इनसे रीयलटाइम ऑडियो इनपुट स्ट्रीम बनती है.

video

Blob

ज़रूरी नहीं. ये रीयलटाइम वीडियो इनपुट स्ट्रीम बनाते हैं.

activityStart

ActivityStart

ज़रूरी नहीं. यह कुकी, उपयोगकर्ता गतिविधि की शुरुआत को मार्क करती है. इस इवेंट को सिर्फ़ तब भेजा जा सकता है, जब गतिविधि का अपने-आप (यानी कि सर्वर-साइड) पता लगाने की सुविधा बंद हो.

activityEnd

ActivityEnd

ज़रूरी नहीं. यह कुकी, उपयोगकर्ता गतिविधि के खत्म होने का समय मार्क करती है. इस इवेंट को सिर्फ़ तब भेजा जा सकता है, जब गतिविधि का अपने-आप (यानी कि सर्वर-साइड) पता लगाने की सुविधा बंद हो.

mediaResolution

MediaResolution

ज़रूरी नहीं. इस्तेमाल किया जाने वाला मीडिया रिज़ॉल्यूशन. अगर यह जानकारी नहीं दी गई है, तो setup.generationConfig.mediaResolution का इस्तेमाल किया जाता है. अगर सेटअप की जानकारी नहीं दी गई है, तो डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.

audioStreamEnd

bool

ज़रूरी नहीं. इससे पता चलता है कि ऑडियो स्ट्रीम बंद हो गई है. जैसे, माइक्रोफ़ोन बंद कर दिया गया है.

इसे सिर्फ़ तब भेजा जाना चाहिए, जब गतिविधि का अपने-आप पता चलने की सुविधा चालू हो. यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.

क्लाइंट, ऑडियो मैसेज भेजकर स्ट्रीम को फिर से खोल सकता है.

text

string

ज़रूरी नहीं. ये रीयलटाइम टेक्स्ट इनपुट स्ट्रीम बनाते हैं.

BidiGenerateContentServerContent

क्लाइंट के मैसेज के जवाब में, मॉडल के ज़रिए जनरेट किया गया इंक्रीमेंटल सर्वर अपडेट.

कॉन्टेंट को जल्द से जल्द जनरेट किया जाता है, न कि रीयल टाइम में. क्लाइंट के पास, वीडियो को बफ़र करने और रीयल टाइम में चलाने का विकल्प होता है.

फ़ील्ड
generationComplete

bool

सिर्फ़ आउटपुट के लिए. अगर सही है, तो इसका मतलब है कि मॉडल ने जवाब जनरेट कर लिया है.

जवाब जनरेट करते समय मॉडल के रुक जाने पर, 'generation_complete' मैसेज नहीं दिखेगा. इसके बजाय, 'interrupted > turn_complete' मैसेज दिखेगा.

जब मॉडल रीयलटाइम प्लेबैक की सुविधा का इस्तेमाल करता है, तब generation_complete और turn_complete के बीच देरी होती है. ऐसा इसलिए होता है, क्योंकि मॉडल प्लेबैक के खत्म होने का इंतज़ार करता है.

turnComplete

bool

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

interrupted

bool

सिर्फ़ आउटपुट के लिए. अगर यह वैल्यू 'सही है' पर सेट है, तो इसका मतलब है कि क्लाइंट के मैसेज की वजह से, मौजूदा मॉडल जनरेट होने में रुकावट आई है. अगर क्लाइंट, कॉन्टेंट को रीयल टाइम में चला रहा है, तो यह एक अच्छा सिग्नल है. इससे मौजूदा कॉन्टेंट को चलाने की सूची को रोका जा सकता है और उसे खाली किया जा सकता है.

groundingMetadata

GroundingMetadata

सिर्फ़ आउटपुट के लिए. जनरेट किए गए कॉन्टेंट के लिए ग्राउंडिंग मेटाडेटा.

inputTranscription

BidiGenerateContentTranscription

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

interimInputTranscription

BidiGenerateContentTranscription

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

outputTranscription

BidiGenerateContentTranscription

सिर्फ़ आउटपुट के लिए. ऑडियो को टेक्स्ट में बदलने की सुविधा. ये ट्रांसक्रिप्शन, सर्वर के जनरेशन आउटपुट का हिस्सा होते हैं. इस टर्न के आउटपुट का आखिरी ट्रांसक्रिप्शन, generationComplete या interrupted से पहले भेजा जाता है. इसके बाद, turnComplete भेजा जाता है. इस बात की कोई गारंटी नहीं है कि ट्रांसक्रिप्शन और modelTurn के अन्य आउटपुट एक ही क्रम में होंगे. हालांकि, सर्वर ट्रांसक्रिप्ट को ऑडियो आउटपुट के क्रम में भेजने की कोशिश करता है.

urlContextMetadata

UrlContextMetadata

waitingForInput

bool

सिर्फ़ आउटपुट के लिए. अगर यह वैल्यू सही है, तो इसका मतलब है कि मॉडल कॉन्टेंट जनरेट नहीं कर रहा है.ऐसा इसलिए, क्योंकि वह उपयोगकर्ता से ज़्यादा इनपुट मिलने का इंतज़ार कर रहा है. उदाहरण के लिए, क्योंकि उसे उम्मीद है कि उपयोगकर्ता बातचीत जारी रखेगा.

speechState
(deprecated)

SpeechState

सिर्फ़ आउटपुट के लिए. DEPRECATED: Use VoiceActivity instead.

realtimeInput.audio पर, आवाज़ का पता लगाने की सुविधा की मौजूदा स्थिति दिखाता है. अगर स्थिति में कोई बदलाव नहीं हुआ है, तो इसे सेट नहीं किया जाता या शून्य पर सेट किया जाता है.

interactionStatus

InteractionStatus

सिर्फ़ आउटपुट के लिए. लाइव सेशन की मौजूदा स्थिति. इन्हें हमेशा turnComplete के साथ भेजा जाता है.

modelTurn

Content

सिर्फ़ आउटपुट के लिए. ऐसा कॉन्टेंट जिसे मॉडल ने उपयोगकर्ता के साथ मौजूदा बातचीत के दौरान जनरेट किया है.

BidiGenerateContentServerMessage

BidiGenerateContent कॉल के लिए जवाब का मैसेज.

फ़ील्ड
usageMetadata

UsageMetadata

सिर्फ़ आउटपुट के लिए. जवाबों के इस्तेमाल से जुड़ा मेटाडेटा.

यूनियन फ़ील्ड messageType. मैसेज किस तरह का है. messageType इनमें से सिर्फ़ एक हो सकता है:
setupComplete

BidiGenerateContentSetupComplete

सिर्फ़ आउटपुट के लिए. यह मैसेज, सेटअप पूरा होने पर क्लाइंट से मिले BidiGenerateContentSetup मैसेज के जवाब में भेजा जाता है.

serverContent

BidiGenerateContentServerContent

सिर्फ़ आउटपुट के लिए. क्लाइंट के मैसेज के जवाब में मॉडल से जनरेट किया गया कॉन्टेंट.

toolCall

BidiGenerateContentToolCall

सिर्फ़ आउटपुट के लिए. क्लाइंट से functionCalls को लागू करने का अनुरोध करें और मैच करने वाले id के साथ जवाब दिखाएं.

toolCallCancellation

BidiGenerateContentToolCallCancellation

सिर्फ़ आउटपुट के लिए. क्लाइंट को सूचना दी जाती है कि पहले जारी किए गए ToolCallMessage को तय किए गए ids के साथ रद्द कर दिया जाना चाहिए.

goAway

GoAway

सिर्फ़ आउटपुट के लिए. सूचना कि सर्वर जल्द ही डिसकनेक्ट हो जाएगा.

sessionResumptionUpdate

SessionResumptionUpdate

सिर्फ़ आउटपुट के लिए. सेशन फिर से शुरू होने की स्थिति को अपडेट करना.

BidiGenerateContentSetup

पहले BidiGenerateContentClientMessage में भेजा जाने वाला मैसेज. इसमें ऐसा कॉन्फ़िगरेशन होता है जो स्ट्रीमिंग आरपीसी के दौरान लागू होगा.

क्लाइंट को कोई भी अन्य मैसेज भेजने से पहले, BidiGenerateContentSetupComplete मैसेज का इंतज़ार करना चाहिए.

फ़ील्ड
model

string

ज़रूरी है. मॉडल के संसाधन का नाम. यह मॉडल के लिए आईडी के तौर पर काम करता है.

फ़ॉर्मैट: models/{model}

generationConfig

GenerationConfig

ज़रूरी नहीं. जनरेट करने का कॉन्फ़िगरेशन.

ये फ़ील्ड काम नहीं करते:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stopSequence
  • skipResponseCache
  • routingConfig
  • audioTimestamp
systemInstruction

Content

ज़रूरी नहीं. उपयोगकर्ता ने मॉडल के लिए सिस्टम से जुड़े निर्देश दिए हैं.

ध्यान दें: जवाब के हर हिस्से में सिर्फ़ टेक्स्ट का इस्तेमाल किया जाना चाहिए. साथ ही, हर हिस्से का कॉन्टेंट अलग पैराग्राफ़ में होना चाहिए.

tools[]

Tool

ज़रूरी नहीं. Tools मॉडल, अगली प्रतिक्रिया जनरेट करने के लिए इस सूची का इस्तेमाल कर सकता है.

Tool एक ऐसा कोड होता है जो सिस्टम को बाहरी सिस्टम के साथ इंटरैक्ट करने की अनुमति देता है. इससे सिस्टम, मॉडल की जानकारी और दायरे से बाहर कोई कार्रवाई या कार्रवाइयों का सेट कर पाता है.

realtimeInputConfig

RealtimeInputConfig

ज़रूरी नहीं. यह कुकी, रीयलटाइम इनपुट को मैनेज करने के लिए कॉन्फ़िगर की जाती है.

sessionResumption

SessionResumptionConfig

ज़रूरी नहीं. यह कुकी, सेशन को फिर से शुरू करने के तरीके को कॉन्फ़िगर करती है.

अगर यह शामिल है, तो सर्वर SessionResumptionUpdate मैसेज भेजेगा.

contextWindowCompression

ContextWindowCompressionConfig

ज़रूरी नहीं. यह कुकी, कॉन्टेक्स्ट विंडो को कंप्रेस करने के तरीके को कॉन्फ़िगर करती है.

अगर इसे शामिल किया जाता है, तो कॉन्फ़िगर की गई लंबाई से ज़्यादा होने पर सर्वर, कॉन्टेक्स्ट का साइज़ अपने-आप कम कर देगा.

inputAudioTranscription

AudioTranscriptionConfig

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

outputAudioTranscription

AudioTranscriptionConfig

ज़रूरी नहीं. अगर यह विकल्प सेट किया जाता है, तो मॉडल के ऑडियो आउटपुट को ट्रांसक्रिप्ट करने की सुविधा चालू हो जाती है. अगर कॉन्फ़िगर किया गया है, तो ट्रांसक्रिप्ट, आउटपुट ऑडियो के लिए तय किए गए भाषा कोड के मुताबिक होती है.

proactivity

ProactivityConfig

ज़रूरी नहीं. यह कुकी, मॉडल के सुझाव देने की सुविधा को कॉन्फ़िगर करती है.

इससे मॉडल को इनपुट का तुरंत जवाब देने और काम के न होने वाले इनपुट को अनदेखा करने में मदद मिलती है.

historyConfig

HistoryConfig

ज़रूरी नहीं. यह कुकी, क्लाइंट और सर्वर के बीच इतिहास को शेयर करने की सुविधा को कॉन्फ़िगर करती है.

BidiGenerateContentSetupComplete

इस टाइप में कोई फ़ील्ड नहीं है.

यह क्लाइंट से मिले BidiGenerateContentSetup मैसेज के जवाब में भेजा जाता है.

BidiGenerateContentToolCall

क्लाइंट से functionCalls को लागू करने का अनुरोध करें और मैच करने वाले id के साथ जवाब दिखाएं.

फ़ील्ड
functionCalls[]

FunctionCall

सिर्फ़ आउटपुट के लिए. वह फ़ंक्शन कॉल जिसे एक्ज़ीक्यूट करना है.

BidiGenerateContentToolCallCancellation

क्लाइंट को सूचना दी जाती है कि पहले जारी किया गया ToolCallMessage, तय किए गए id के साथ लागू नहीं किया जाना चाहिए और इसे रद्द कर दिया जाना चाहिए. अगर टूल कॉल के कुछ साइड इफ़ेक्ट हुए हैं, तो क्लाइंट टूल कॉल को पहले जैसा करने की कोशिश कर सकते हैं. यह मैसेज सिर्फ़ उन मामलों में दिखता है जहां क्लाइंट, सर्वर के टर्न में रुकावट डालते हैं.

फ़ील्ड
ids[]

string

सिर्फ़ आउटपुट के लिए. रद्द किए जाने वाले टूल कॉल के आईडी.

BidiGenerateContentToolResponse

क्लाइंट ने सर्वर से मिले ToolCall का जवाब जनरेट किया. id फ़ील्ड की मदद से, हर FunctionResponse ऑब्जेक्ट को उसके FunctionCall ऑब्जेक्ट से मैच किया जाता है.

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

फ़ील्ड
functionResponses[]

FunctionResponse

ज़रूरी नहीं. फ़ंक्शन कॉल का जवाब.

BidiGenerateContentTranscription

ऑडियो (इनपुट या आउटपुट) को ट्रांसक्राइब करना.

फ़ील्ड
text

string

ट्रांसक्रिप्शन टेक्स्ट.

languageCode

string

ट्रांसक्रिप्ट का BCP-47 भाषा कोड.

ContextWindowCompressionConfig

यह कॉन्टेक्स्ट विंडो कंप्रेस करने की सुविधा चालू करता है. यह मॉडल की कॉन्टेक्स्ट विंडो को मैनेज करने का एक तरीका है, ताकि यह तय की गई लंबाई से ज़्यादा न हो.

फ़ील्ड
यूनियन फ़ील्ड compressionMechanism. कॉन्टेक्स्ट विंडो को कंप्रेस करने के लिए इस्तेमाल किया गया तरीका. compressionMechanism इनमें से सिर्फ़ एक हो सकता है:
slidingWindow

SlidingWindow

स्लाइडिंग-विंडो मैकेनिज़्म.

triggerTokens

int64

कॉन्टेक्स्ट विंडो कंप्रेस करने की सुविधा को ट्रिगर करने के लिए, टर्न शुरू होने से पहले ज़रूरी टोकन की संख्या.

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

अगर इसे सेट नहीं किया जाता है, तो डिफ़ॉल्ट रूप से यह मॉडल की कॉन्टेक्स्ट विंडो की सीमा का 80% होता है. इससे, अगले उपयोगकर्ता के अनुरोध/मॉडल के जवाब के लिए 20% टोकन बचते हैं.

EndSensitivity

इससे यह तय होता है कि बोली खत्म होने का पता कैसे लगाया जाए.

Enums
END_SENSITIVITY_UNSPECIFIED डिफ़ॉल्ट रूप से, END_SENSITIVITY_HIGH पर सेट होता है.
END_SENSITIVITY_HIGH अपने-आप बोली पहचानने की सुविधा, अक्सर बोली को खत्म कर देती है.
END_SENSITIVITY_LOW अपने-आप पहचान होने की सुविधा, बोली को कम बार खत्म करती है.

GoAway

सूचना कि सर्वर जल्द ही डिसकनेक्ट हो जाएगा.

फ़ील्ड
timeLeft

Duration

कनेक्शन बंद होने से पहले का समय, ABORTED के तौर पर दिखेगा.

यह अवधि, मॉडल के हिसाब से तय की गई कम से कम अवधि से कभी कम नहीं होगी. यह अवधि, मॉडल के लिए तय की गई दर की सीमाओं के साथ बताई जाएगी.

HistoryConfig

इतिहास का कॉन्फ़िगरेशन.

इस मैसेज को सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.historyConfig के तौर पर शामिल किया गया है. यह कुकी, इतिहास के मैसेज के एक्सचेंज को कॉन्फ़िगर करती है.

फ़ील्ड
initialHistoryInClientContent

bool

ज़रूरी नहीं. अगर यह वैल्यू सही है, तो setupComplete भेजने के बाद सर्वर इंतज़ार करेगा. साथ ही, turnComplete के true होने तक, clientContent मैसेज को प्रोसेस करेगा. इस शुरुआती इतिहास से मॉडल कॉल ट्रिगर नहीं होगा और यह MODEL की भूमिका के साथ खत्म हो सकता है. turnComplete के true होने के बाद, क्लाइंट realtimeInput के ज़रिए रीयलटाइम बातचीत शुरू कर सकता है.

ProactivityConfig

यह कुकी, सक्रियता से जुड़ी सुविधाओं के लिए कॉन्फ़िगर की जाती है.

फ़ील्ड
proactiveAudio

bool

ज़रूरी नहीं. इस सेटिंग के चालू होने पर, मॉडल को यह अधिकार होता है कि वह आखिरी प्रॉम्प्ट का जवाब न दे. उदाहरण के लिए, इससे मॉडल को कॉन्टेक्स्ट से बाहर की बातचीत को अनदेखा करने या उपयोगकर्ता की ओर से अब तक कोई अनुरोध न किए जाने पर चुप रहने की अनुमति मिलती है.

RealtimeInputConfig

यह कुकी, BidiGenerateContent में रीयलटाइम इनपुट के व्यवहार को कॉन्फ़िगर करती है.

फ़ील्ड
automaticActivityDetection

AutomaticActivityDetection

ज़रूरी नहीं. अगर इसे सेट नहीं किया जाता है, तो गतिविधि का अपने-आप पता चलने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर आवाज़ का अपने-आप पता चलने की सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे.

activityHandling

ActivityHandling

ज़रूरी नहीं. इससे पता चलता है कि गतिविधि का क्या असर हुआ.

turnCoverage

TurnCoverage

ज़रूरी नहीं. इससे यह तय होता है कि उपयोगकर्ता के टर्न में कौनसी जानकारी शामिल की जाएगी.

SessionResumptionConfig

सेशन फिर से शुरू करने का कॉन्फ़िगरेशन.

इस मैसेज को सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.sessionResumption के तौर पर शामिल किया गया है. अगर कॉन्फ़िगर किया गया है, तो सर्वर SessionResumptionUpdate मैसेज भेजेगा.

फ़ील्ड
handle

string

पिछले सेशन का हैंडल. अगर यह कुकी मौजूद नहीं है, तो नया सेशन बनाया जाता है.

सेशन हैंडल, पिछले कनेक्शन में मौजूद SessionResumptionUpdate.token वैल्यू से मिलते हैं.

SessionResumptionUpdate

सेशन फिर से शुरू होने की स्थिति को अपडेट करना.

यह कुकी सिर्फ़ तब भेजी जाती है, जब BidiGenerateContentSetup.sessionResumption सेट किया गया हो.

फ़ील्ड
newHandle

string

नया हैंडल, जो ऐसी स्थिति को दिखाता है जिसे फिर से शुरू किया जा सकता है. अगर resumable=false है, तो यह खाली होगा.

resumable

bool

अगर मौजूदा सेशन को इस समय फिर से शुरू किया जा सकता है, तो यह वैल्यू सही होती है.

सेशन के कुछ हिस्सों में, वीडियो को फिर से शुरू नहीं किया जा सकता. उदाहरण के लिए, जब मॉडल फ़ंक्शन कॉल कर रहा हो या जनरेट कर रहा हो. इस स्थिति में, पिछले सेशन के टोकन का इस्तेमाल करके सेशन को फिर से शुरू करने पर, कुछ डेटा का नुकसान होगा. ऐसे मामलों में, newHandle खाली होगा और resumable की वैल्यू 'गलत' होगी.

SlidingWindow

स्लाइडिंग विंडो का तरीका, कॉन्टेक्स्ट विंडो की शुरुआत में मौजूद कॉन्टेंट को हटाकर काम करता है. जवाब में शामिल कॉन्टेक्स्ट हमेशा USER की भूमिका वाले टर्न की शुरुआत से शुरू होगा. सिस्टम के निर्देश और कोई भी BidiGenerateContentSetup.prefixTurns, जवाब की शुरुआत में हमेशा मौजूद रहेगा.

फ़ील्ड
targetTokens

int64

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

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

StartSensitivity

इस कुकी से यह तय होता है कि आवाज़ की पहचान कैसे की जाए.

Enums
START_SENSITIVITY_UNSPECIFIED डिफ़ॉल्ट वैल्यू START_SENSITIVITY_HIGH होती है.
START_SENSITIVITY_HIGH अपने-आप पहचान करने की सुविधा, बोली की शुरुआत का पता ज़्यादा बार लगाएगी.
START_SENSITIVITY_LOW अपने-आप पहचान करने की सुविधा, बोली की शुरुआत का पता कम बार लगाएगी.

TurnCoverage

उपयोगकर्ता के टर्न में कौनसे इनपुट शामिल किए गए हैं, इसके बारे में विकल्प.

Enums
TURN_COVERAGE_UNSPECIFIED अगर इसे तय नहीं किया जाता है, तो मॉडल के आधार पर डिफ़ॉल्ट तरीका चुना जाता है. उदाहरण के लिए, Gemini 2.5 के लिए डिफ़ॉल्ट सेटिंग TURN_INCLUDES_ONLY_ACTIVITY है, जबकि Gemini 3.1 और इसके बाद के वर्शन के लिए यह TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO है.
TURN_INCLUDES_ONLY_ACTIVITY इसमें पिछले टर्न के बाद की गतिविधि शामिल होती है.हालांकि, इसमें कोई गतिविधि न होने की जानकारी शामिल नहीं होती. जैसे, ऑडियो स्ट्रीम में कोई आवाज़ न होना.
TURN_INCLUDES_ALL_INPUT इसमें पिछली बारी के बाद से, रीयलटाइम में दिया गया सभी इनपुट शामिल होता है.इसमें कोई गतिविधि न होना भी शामिल है. जैसे, ऑडियो स्ट्रीम पर कोई आवाज़ न होना.
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO इसमें ऑडियो गतिविधि और पिछली बारी से अब तक के सभी वीडियो शामिल होते हैं. गतिविधि का अपने-आप पता लगने की सुविधा के तहत, ऑडियो गतिविधि का मतलब है बोली गई आवाज़. इसमें चुप्पी शामिल नहीं है.

TranslationConfig

अनुवाद की सुविधाओं के लिए कॉन्फ़िगरेशन.

फ़ील्ड
targetLanguageCode

string

ज़रूरी है. अनुवाद के लिए टारगेट भाषा. BCP-47 भाषा कोड (जैसे, "en", "es", "fr") को वैल्यू के तौर पर इस्तेमाल किया जा सकता है.

echoTargetLanguage

bool

ज़रूरी नहीं. अगर इस विकल्प को 'सही है' पर सेट किया जाता है, तो टारगेट की गई भाषा में बोले जाने पर मॉडल ऑडियो जनरेट करेगा. इसका मतलब है कि यह इनपुट को दोहराएगा. अगर यह वैल्यू 'गलत है', तो हम टारगेट की गई भाषा के लिए ऑडियो नहीं बनाएंगे.

UrlContextMetadata

यूआरएल के कॉन्टेक्स्ट को वापस पाने वाले टूल से जुड़ा मेटाडेटा.

फ़ील्ड
urlMetadata[]

UrlMetadata

यूआरएल कॉन्टेक्स्ट की सूची.

UsageMetadata

जवाबों के इस्तेमाल से जुड़ा मेटाडेटा.

फ़ील्ड
promptTokenCount

int32

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

cachedContentTokenCount

int32

प्रॉम्प्ट के कैश मेमोरी में सेव किए गए हिस्से (कैश मेमोरी में सेव किया गया कॉन्टेंट) में मौजूद टोकन की संख्या

responseTokenCount

int32

सिर्फ़ आउटपुट के लिए. जवाब के तौर पर जनरेट किए गए सभी संभावित विकल्पों में मौजूद टोकन की कुल संख्या.

toolUsePromptTokenCount

int32

सिर्फ़ आउटपुट के लिए. टूल का इस्तेमाल करने के लिए दिए गए प्रॉम्प्ट में मौजूद टोकन की संख्या.

thoughtsTokenCount

int32

सिर्फ़ आउटपुट के लिए. सोचने वाले मॉडल के लिए, आइडिया के टोकन की संख्या.

totalTokenCount

int32

सिर्फ़ आउटपुट के लिए. जनरेट करने के अनुरोध (प्रॉम्प्ट + जवाब के संभावित उम्मीदवार) के लिए टोकन की कुल संख्या.

promptTokensDetails[]

ModalityTokenCount

सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में प्रोसेस की गई मॉडेलिटी की सूची.

cacheTokensDetails[]

ModalityTokenCount

सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में मौजूद, कैश मेमोरी में सेव किए गए कॉन्टेंट के मोड की सूची.

responseTokensDetails[]

ModalityTokenCount

सिर्फ़ आउटपुट के लिए. जवाब में मिली मॉडेलिटी की सूची.

toolUsePromptTokensDetails[]

ModalityTokenCount

सिर्फ़ आउटपुट के लिए. टूल इस्तेमाल करने के अनुरोध के इनपुट के लिए प्रोसेस की गई मॉडेलिटी की सूची.

कुछ समय के लिए पुष्टि करने वाले टोकन

अस्थायी पुष्टि करने वाले टोकन पाने के लिए, AuthTokenService.CreateToken को कॉल करें. इसके बाद, इनका इस्तेमाल GenerativeService.BidiGenerateContentConstrained के साथ किया जा सकता है. इसके लिए, टोकन को access_token क्वेरी पैरामीटर में पास करें या एचटीटीपी Authorization हेडर में "Token" प्रीफ़िक्स के साथ पास करें.

CreateAuthTokenRequest

कुछ समय के लिए मान्य ऑथेंटिकेशन टोकन बनाएं.

फ़ील्ड
authToken

AuthToken

ज़रूरी है. बनाया जाने वाला टोकन.

AuthToken

यह कुछ समय के लिए मान्य ऑथेंटिकेशन टोकन बनाने का अनुरोध है.

फ़ील्ड
name

string

सिर्फ़ आउटपुट के लिए. आइडेंटिफ़ायर. टोकन.

expireTime

Timestamp

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह एक वैकल्पिक समय है. इस समय के बाद, जनरेट किए गए टोकन का इस्तेमाल करने पर, BidiGenerateContent सेशन में मौजूद मैसेज अस्वीकार कर दिए जाएंगे. (Gemini, इस समय के बाद सेशन को पहले से ही बंद कर सकता है.)

अगर इसे सेट नहीं किया जाता है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 30 मिनट पर सेट हो जाएगा. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद से पहले की होनी चाहिए.

newSessionExpireTime

Timestamp

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह वह समय है जिसके बाद, इस अनुरोध से मिले टोकन का इस्तेमाल करके बनाए गए नए Live API सेशन अस्वीकार कर दिए जाएंगे.

अगर इसे सेट नहीं किया जाता है, तो आने वाले समय में इसकी डिफ़ॉल्ट वैल्यू 60 सेकंड होगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद से पहले की होनी चाहिए.

fieldMask

FieldMask

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. अगर field_mask खाली है और bidiGenerateContentSetup मौजूद नहीं है, तो BidiGenerateContentSetup मैसेज को लाइव एपीआई कनेक्शन से लिया जाता है.

अगर field_mask खाली है और bidiGenerateContentSetup is मौजूद है, तो इस अनुरोध में BidiGenerateContentSetup मैसेज, पूरी तरह से bidiGenerateContentSetup से लिया जाता है. लाइव एपीआई कनेक्शन से मिले सेटअप मैसेज को अनदेखा किया जाता है.

अगर field_mask खाली नहीं है, तो bidiGenerateContentSetup में मौजूद फ़ील्ड, Live API कनेक्शन में सेटअप मैसेज के फ़ील्ड को बदल देंगे.

यूनियन फ़ील्ड config. नतीजे के तौर पर मिले टोकन के लिए, तरीके के हिसाब से कॉन्फ़िगरेशन. config इनमें से सिर्फ़ एक हो सकता है:
bidiGenerateContentSetup

BidiGenerateContentSetup

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. BidiGenerateContent के लिए कॉन्फ़िगरेशन.

uses

int32

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. टोकन का इस्तेमाल कितनी बार किया जा सकता है. अगर यह वैल्यू शून्य है, तो कोई सीमा लागू नहीं होती. लाइव एपीआई सेशन को फिर से शुरू करने को इस्तेमाल नहीं माना जाता. अगर कोई वैल्यू नहीं दी जाती है, तो डिफ़ॉल्ट रूप से इसकी वैल्यू 1 होती है.

सामान्य टाइप के बारे में ज़्यादा जानकारी

आम तौर पर इस्तेमाल किए जाने वाले एपीआई रिसॉर्स टाइप Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount, और Tool के बारे में ज़्यादा जानने के लिए, कॉन्टेंट जनरेट करना लेख पढ़ें.