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
  },
  "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

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

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

AutomaticActivityDetection

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

फ़ील्ड
disabled

bool

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

startOfSpeechSensitivity

StartSensitivity

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

prefixPaddingMs

int32

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

endOfSpeechSensitivity

EndSensitivity

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

silenceDurationMs

int32

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

BidiGenerateContentClientContent

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

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

फ़ील्ड
turns[]

Content

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

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

turnComplete

bool

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

BidiGenerateContentRealtimeInput

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

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

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

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

Blob

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

DEPRECATED: इसके बजाय, audio, video या text में से किसी एक का इस्तेमाल करें.

audio

Blob

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

video

Blob

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

activityStart

ActivityStart

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

activityEnd

ActivityEnd

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

audioStreamEnd

bool

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

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

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

text

string

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

BidiGenerateContentServerContent

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

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

फ़ील्ड
generationComplete

bool

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

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

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

turnComplete

bool

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

interrupted

bool

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

groundingMetadata

GroundingMetadata

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

inputTranscription

BidiGenerateContentTranscription

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

outputTranscription

BidiGenerateContentTranscription

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

urlContextMetadata

UrlContextMetadata

modelTurn

Content

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

BidiGenerateContentServerMessage

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

फ़ील्ड
usageMetadata

UsageMetadata

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

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

BidiGenerateContentSetupComplete

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

serverContent

BidiGenerateContentServerContent

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

toolCall

BidiGenerateContentToolCall

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

toolCallCancellation

BidiGenerateContentToolCallCancellation

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

goAway

GoAway

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

sessionResumptionUpdate

SessionResumptionUpdate

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

BidiGenerateContentSetup

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

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

फ़ील्ड
model

string

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

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

generationConfig

GenerationConfig

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

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

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

Content

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

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

tools[]

Tool

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

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

realtimeInputConfig

RealtimeInputConfig

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

sessionResumption

SessionResumptionConfig

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

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

contextWindowCompression

ContextWindowCompressionConfig

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

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

inputAudioTranscription

AudioTranscriptionConfig

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

outputAudioTranscription

AudioTranscriptionConfig

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

proactivity

ProactivityConfig

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

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

BidiGenerateContentSetupComplete

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

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

BidiGenerateContentToolCall

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

फ़ील्ड
functionCalls[]

FunctionCall

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

BidiGenerateContentToolCallCancellation

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

फ़ील्ड
ids[]

string

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

BidiGenerateContentToolResponse

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

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

फ़ील्ड
functionResponses[]

FunctionResponse

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

BidiGenerateContentTranscription

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

फ़ील्ड
text

string

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

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 के तौर पर दिखेगा.

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

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 अगर इसे तय नहीं किया जाता है, तो डिफ़ॉल्ट तरीका TURN_INCLUDES_ONLY_ACTIVITY होता है.
TURN_INCLUDES_ONLY_ACTIVITY उपयोगकर्ताओं की बारी में, सिर्फ़ पिछली बारी के बाद की गतिविधि शामिल होती है.इसमें कोई गतिविधि न होने की अवधि शामिल नहीं होती. उदाहरण के लिए, ऑडियो स्ट्रीम पर चुप्पी. यह डिफ़ॉल्ट व्यवहार है.
TURN_INCLUDES_ALL_INPUT उपयोगकर्ताओं के टर्न में, पिछली बार से लेकर अब तक का सभी रीयलटाइम इनपुट शामिल होता है.इसमें कोई गतिविधि न होना भी शामिल है. उदाहरण के लिए, ऑडियो स्ट्रीम पर कोई आवाज़ न होना.

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 मौजूद है, तो इस अनुरोध में BidiGenerateContentSetup मैसेज, पूरी तरह से bidiGenerateContentSetup से लिया जाता है. लाइव एपीआई कनेक्शन से मिले सेटअप मैसेज को अनदेखा किया जाता है.

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

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

BidiGenerateContentSetup

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

uses

int32

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

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

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