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 को छोड़कर बाकी सभी को अनदेखा कर दिया जाएगा.

अब सेवा में नहीं है: इसके बजाय, 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

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

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

historyConfig

HistoryConfig

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

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

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

HistoryConfig

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

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

फ़ील्ड
initialHistoryInClientContent

bool

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

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 के बारे में ज़्यादा जानने के लिए, कॉन्टेंट जनरेट करना लेख पढ़ें.