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[] |
ज़रूरी नहीं. BCP-47 भाषा कोड, जो ऑडियो में मौजूद भाषाओं के बारे में जानकारी देते हैं. अगर इसे शामिल नहीं किया जाता है या यह खाली है, तो भाषा की अपने-आप पहचान होने की सुविधा डिफ़ॉल्ट रूप से चालू हो जाती है. |
customVocabulary[] |
ज़रूरी नहीं. कस्टम शब्दावली के वाक्यांशों की सूची. इससे स्पीच रिकग्निशन मॉडल को खास शब्दों (प्रॉडक्ट के नाम, प्रॉपर नाउन, तकनीकी शब्द) को पहचानने में मदद मिलती है. |
wordTimestamp |
ज़रूरी नहीं. यह विकल्प, शब्द-लेवल पर टाइमस्टैंप जनरेट करने की सुविधा को कॉन्फ़िगर करता है. |
diarization |
ज़रूरी नहीं. यह कुकी, स्पीकर डायराइज़ेशन की सुविधा को कॉन्फ़िगर करती है. |
mode |
ज़रूरी नहीं. यह कुकी, ट्रांसक्रिप्शन मोड को कॉन्फ़िगर करती है. इस्तेमाल की जा सकने वाली वैल्यू: |
मोड
बोली को लेख में बदलने का मोड.
| Enums | |
|---|---|
MODE_UNSPECIFIED |
ट्रांसक्रिप्शन मोड की जानकारी नहीं दी गई है. |
VERBATIM |
बोले गए शब्दों को हूबहू टेक्स्ट में बदलने का मोड. |
SMART |
स्मार्ट ट्रांसक्रिप्शन मोड. |
AutomaticActivityDetection
यह कुकी, गतिविधि का अपने-आप पता लगने की सुविधा को कॉन्फ़िगर करती है.
| फ़ील्ड | |
|---|---|
disabled |
ज़रूरी नहीं. अगर यह सेटिंग चालू है (डिफ़ॉल्ट रूप से चालू रहती है), तो आवाज़ और टेक्स्ट इनपुट का पता चलने पर, उसे गतिविधि के तौर पर गिना जाता है. अगर यह सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे. |
startOfSpeechSensitivity |
ज़रूरी नहीं. इससे यह तय होता है कि बोली का पता चलने की संभावना कितनी है. |
prefixPaddingMs |
ज़रूरी नहीं. बोले जा रहे शब्दों को टेक्स्ट में बदलने की सुविधा शुरू होने से पहले, बोले गए शब्दों की ज़रूरी अवधि. इस वैल्यू के कम होने पर, आवाज़ का पता लगाने की सुविधा ज़्यादा संवेदनशील हो जाती है. साथ ही, कम समय तक बोली गई आवाज़ को भी पहचाना जा सकता है. हालांकि, इससे फ़ॉल्स पॉज़िटिव की संभावना भी बढ़ जाती है. |
endOfSpeechSensitivity |
ज़रूरी नहीं. इससे यह तय होता है कि पहचानी गई आवाज़ के खत्म होने की संभावना कितनी है. |
silenceDurationMs |
ज़रूरी नहीं. बातचीत खत्म होने से पहले, बिना आवाज़ वाली गतिविधि (जैसे, चुप्पी) का पता चलने पर, उसकी ज़रूरी अवधि. इस वैल्यू के ज़्यादा होने पर, उपयोगकर्ता की गतिविधि में रुकावट डाले बिना, स्पीच के बीच ज़्यादा समय तक रुका जा सकता है. हालांकि, इससे मॉडल की लेटेन्सी बढ़ जाएगी. |
BidiGenerateContentClientContent
क्लाइंट से मिली मौजूदा बातचीत का इंक्रीमेंटल अपडेट. यहां मौजूद पूरा कॉन्टेंट, बातचीत के इतिहास में बिना किसी शर्त के जोड़ दिया जाता है. साथ ही, इसका इस्तेमाल मॉडल को प्रॉम्प्ट देने के लिए किया जाता है, ताकि वह कॉन्टेंट जनरेट कर सके.
यहां कोई मैसेज टाइप करने पर, मॉडल के जनरेट किए जा रहे मौजूदा जवाब में रुकावट आएगी.
| फ़ील्ड | |
|---|---|
turns[] |
ज़रूरी नहीं. मॉडल के साथ मौजूदा बातचीत में जोड़ा गया कॉन्टेंट. सिंगल-टर्न क्वेरी के लिए, यह एक इंस्टेंस होता है. सिलसिलेवार बातचीत वाली क्वेरी के लिए, यह दोहराया गया फ़ील्ड है. इसमें बातचीत का इतिहास और हाल ही का अनुरोध शामिल होता है. |
turnComplete |
ज़रूरी नहीं. अगर यह वैल्यू सही है, तो इसका मतलब है कि सर्वर को, फ़िलहाल इकट्ठा किए गए प्रॉम्प्ट से कॉन्टेंट जनरेट करना शुरू करना चाहिए. इसके अलावा, सर्वर जनरेट करने की प्रोसेस शुरू करने से पहले, अन्य मैसेज का इंतज़ार करता है. |
BidiGenerateContentRealtimeInput
उपयोगकर्ता का इनपुट, जिसे रीयल टाइम में भेजा जाता है.
ऑडियो, वीडियो, और टेक्स्ट जैसे अलग-अलग फ़ॉर्मैट को एक साथ स्ट्रीम किया जाता है. इन स्ट्रीम में वीडियो के क्रम की कोई गारंटी नहीं है.
यह BidiGenerateContentClientContent से इन मामलों में अलग है:
- इसे मॉडल जनरेट करने के दौरान, बिना किसी रुकावट के लगातार भेजा जा सकता है.
- अगर
BidiGenerateContentClientContentऔरBidiGenerateContentRealtimeInputके बीच इंटरलीव किए गए डेटा को मिक्स करने की ज़रूरत होती है, तो सर्वर सबसे अच्छा जवाब देने के लिए ऑप्टिमाइज़ करने की कोशिश करता है. हालांकि, इसकी कोई गारंटी नहीं है. - टर्न के खत्म होने के बारे में साफ़ तौर पर नहीं बताया गया है. हालांकि, इसे उपयोगकर्ता की गतिविधि से पता लगाया जाता है. उदाहरण के लिए, बातचीत खत्म होने पर.
- टर्न खत्म होने से पहले भी, डेटा को धीरे-धीरे प्रोसेस किया जाता है, ताकि मॉडल से जवाब मिलने में कम समय लगे.
| फ़ील्ड | |
|---|---|
mediaChunks[] |
ज़रूरी नहीं. मीडिया इनपुट के लिए, इनलाइन किए गए बाइट का डेटा. एक से ज़्यादा अब सेवा में नहीं है: इसके बजाय, |
audio |
ज़रूरी नहीं. इनसे रीयलटाइम ऑडियो इनपुट स्ट्रीम बनती है. |
video |
ज़रूरी नहीं. ये रीयलटाइम वीडियो इनपुट स्ट्रीम बनाते हैं. |
activityStart |
ज़रूरी नहीं. यह कुकी, उपयोगकर्ता गतिविधि की शुरुआत को मार्क करती है. इस इवेंट को सिर्फ़ तब भेजा जा सकता है, जब गतिविधि का अपने-आप (यानी कि सर्वर-साइड) पता लगाने की सुविधा बंद हो. |
activityEnd |
ज़रूरी नहीं. यह कुकी, उपयोगकर्ता गतिविधि के खत्म होने का समय मार्क करती है. इस इवेंट को सिर्फ़ तब भेजा जा सकता है, जब गतिविधि का अपने-आप (यानी कि सर्वर-साइड) पता लगाने की सुविधा बंद हो. |
mediaResolution |
ज़रूरी नहीं. इस्तेमाल किया जाने वाला मीडिया रिज़ॉल्यूशन. अगर यह जानकारी नहीं दी गई है, तो |
audioStreamEnd |
ज़रूरी नहीं. इससे पता चलता है कि ऑडियो स्ट्रीम बंद हो गई है. जैसे, माइक्रोफ़ोन बंद कर दिया गया है. इसे सिर्फ़ तब भेजा जाना चाहिए, जब गतिविधि का अपने-आप पता चलने की सुविधा चालू हो. यह सुविधा डिफ़ॉल्ट रूप से चालू होती है. क्लाइंट, ऑडियो मैसेज भेजकर स्ट्रीम को फिर से खोल सकता है. |
text |
ज़रूरी नहीं. ये रीयलटाइम टेक्स्ट इनपुट स्ट्रीम बनाते हैं. |
BidiGenerateContentServerContent
क्लाइंट के मैसेज के जवाब में, मॉडल के ज़रिए जनरेट किया गया इंक्रीमेंटल सर्वर अपडेट.
कॉन्टेंट को जल्द से जल्द जनरेट किया जाता है, न कि रीयल टाइम में. क्लाइंट के पास, वीडियो को बफ़र करने और रीयल टाइम में चलाने का विकल्प होता है.
| फ़ील्ड | |
|---|---|
generationComplete |
सिर्फ़ आउटपुट के लिए. अगर सही है, तो इसका मतलब है कि मॉडल ने जवाब जनरेट कर लिया है. जवाब जनरेट करते समय मॉडल के रुक जाने पर, 'generation_complete' मैसेज नहीं दिखेगा. इसके बजाय, 'interrupted > turn_complete' मैसेज दिखेगा. जब मॉडल रीयलटाइम प्लेबैक की सुविधा का इस्तेमाल करता है, तब generation_complete और turn_complete के बीच देरी होती है. ऐसा इसलिए होता है, क्योंकि मॉडल प्लेबैक के खत्म होने का इंतज़ार करता है. |
turnComplete |
सिर्फ़ आउटपुट के लिए. अगर सही है, तो इसका मतलब है कि मॉडल ने अपना जवाब दे दिया है. जनरेट करने की सुविधा, क्लाइंट के अतिरिक्त मैसेज के जवाब में ही शुरू होगी. ध्यान दें कि जब वीडियो चलाने की स्थिति की रिपोर्टिंग चालू होती है, तब यह इवेंट सिर्फ़ तब दिखता है, जब वीडियो चलाने की स्थिति से पता चलता है कि वीडियो चल चुका है. एक ही जनरेशन के वीडियो के आगे के प्लेबैक स्टेटस को अनदेखा कर दिया जाएगा. |
interrupted |
सिर्फ़ आउटपुट के लिए. अगर यह वैल्यू 'सही है' पर सेट है, तो इसका मतलब है कि क्लाइंट के मैसेज की वजह से, मौजूदा मॉडल जनरेट होने में रुकावट आई है. अगर क्लाइंट, कॉन्टेंट को रीयल टाइम में चला रहा है, तो यह एक अच्छा सिग्नल है. इससे मौजूदा कॉन्टेंट को चलाने की सूची को रोका जा सकता है और उसे खाली किया जा सकता है. |
groundingMetadata |
सिर्फ़ आउटपुट के लिए. जनरेट किए गए कॉन्टेंट के लिए ग्राउंडिंग मेटाडेटा. |
inputTranscription |
सिर्फ़ आउटपुट के लिए. ऑडियो को टेक्स्ट में बदलने की सुविधा के लिए इनपुट. ट्रांसक्रिप्शन को सर्वर के अन्य मैसेज से अलग भेजा जाता है. साथ ही, इसके क्रम की कोई गारंटी नहीं होती. |
interimInputTranscription |
सिर्फ़ आउटपुट के लिए. उपयोगकर्ता के बोलते समय, कम समय में ट्रांसक्रिप्ट तैयार करने की सुविधा अपडेट की जाती है. इस फ़ील्ड में अक्सर बदलाव होते रहते हैं. |
outputTranscription |
सिर्फ़ आउटपुट के लिए. ऑडियो को टेक्स्ट में बदलने की सुविधा. ये ट्रांसक्रिप्शन, सर्वर के जनरेशन आउटपुट का हिस्सा होते हैं. इस टर्न के आउटपुट का आखिरी ट्रांसक्रिप्शन, |
urlContextMetadata |
|
waitingForInput |
सिर्फ़ आउटपुट के लिए. अगर यह वैल्यू सही है, तो इसका मतलब है कि मॉडल कॉन्टेंट जनरेट नहीं कर रहा है.ऐसा इसलिए, क्योंकि वह उपयोगकर्ता से ज़्यादा इनपुट मिलने का इंतज़ार कर रहा है. उदाहरण के लिए, क्योंकि उसे उम्मीद है कि उपयोगकर्ता बातचीत जारी रखेगा. |
speechState |
सिर्फ़ आउटपुट के लिए. DEPRECATED: Use VoiceActivity instead.
|
interactionStatus |
सिर्फ़ आउटपुट के लिए. लाइव सेशन की मौजूदा स्थिति. इन्हें हमेशा |
modelTurn |
सिर्फ़ आउटपुट के लिए. ऐसा कॉन्टेंट जिसे मॉडल ने उपयोगकर्ता के साथ मौजूदा बातचीत के दौरान जनरेट किया है. |
BidiGenerateContentServerMessage
BidiGenerateContent कॉल के लिए जवाब का मैसेज.
| फ़ील्ड | |
|---|---|
usageMetadata |
सिर्फ़ आउटपुट के लिए. जवाबों के इस्तेमाल से जुड़ा मेटाडेटा. |
यूनियन फ़ील्ड messageType. मैसेज किस तरह का है. messageType इनमें से सिर्फ़ एक हो सकता है: |
|
setupComplete |
सिर्फ़ आउटपुट के लिए. यह मैसेज, सेटअप पूरा होने पर क्लाइंट से मिले |
serverContent |
सिर्फ़ आउटपुट के लिए. क्लाइंट के मैसेज के जवाब में मॉडल से जनरेट किया गया कॉन्टेंट. |
toolCall |
सिर्फ़ आउटपुट के लिए. क्लाइंट से |
toolCallCancellation |
सिर्फ़ आउटपुट के लिए. क्लाइंट को सूचना दी जाती है कि पहले जारी किए गए |
goAway |
सिर्फ़ आउटपुट के लिए. सूचना कि सर्वर जल्द ही डिसकनेक्ट हो जाएगा. |
sessionResumptionUpdate |
सिर्फ़ आउटपुट के लिए. सेशन फिर से शुरू होने की स्थिति को अपडेट करना. |
BidiGenerateContentSetup
पहले BidiGenerateContentClientMessage में भेजा जाने वाला मैसेज. इसमें ऐसा कॉन्फ़िगरेशन होता है जो स्ट्रीमिंग आरपीसी के दौरान लागू होगा.
क्लाइंट को कोई भी अन्य मैसेज भेजने से पहले, BidiGenerateContentSetupComplete मैसेज का इंतज़ार करना चाहिए.
| फ़ील्ड | |
|---|---|
model |
ज़रूरी है. मॉडल के संसाधन का नाम. यह मॉडल के लिए आईडी के तौर पर काम करता है. फ़ॉर्मैट: |
generationConfig |
ज़रूरी नहीं. जनरेट करने का कॉन्फ़िगरेशन. ये फ़ील्ड काम नहीं करते:
|
systemInstruction |
ज़रूरी नहीं. उपयोगकर्ता ने मॉडल के लिए सिस्टम से जुड़े निर्देश दिए हैं. ध्यान दें: जवाब के हर हिस्से में सिर्फ़ टेक्स्ट का इस्तेमाल किया जाना चाहिए. साथ ही, हर हिस्से का कॉन्टेंट अलग पैराग्राफ़ में होना चाहिए. |
tools[] |
ज़रूरी नहीं.
|
realtimeInputConfig |
ज़रूरी नहीं. यह कुकी, रीयलटाइम इनपुट को मैनेज करने के लिए कॉन्फ़िगर की जाती है. |
sessionResumption |
ज़रूरी नहीं. यह कुकी, सेशन को फिर से शुरू करने के तरीके को कॉन्फ़िगर करती है. अगर यह शामिल है, तो सर्वर |
contextWindowCompression |
ज़रूरी नहीं. यह कुकी, कॉन्टेक्स्ट विंडो को कंप्रेस करने के तरीके को कॉन्फ़िगर करती है. अगर इसे शामिल किया जाता है, तो कॉन्फ़िगर की गई लंबाई से ज़्यादा होने पर सर्वर, कॉन्टेक्स्ट का साइज़ अपने-आप कम कर देगा. |
inputAudioTranscription |
ज़रूरी नहीं. अगर सेट किया गया है, तो यह बोले गए शब्दों का अपने-आप टाइप होना सुविधा चालू करता है. अगर ऑडियो को टेक्स्ट में बदलने की सुविधा कॉन्फ़िगर की गई है, तो ऑडियो को टेक्स्ट में बदलने की सुविधा, ऑडियो की भाषा के हिसाब से काम करती है. |
outputAudioTranscription |
ज़रूरी नहीं. अगर यह विकल्प सेट किया जाता है, तो मॉडल के ऑडियो आउटपुट को ट्रांसक्रिप्ट करने की सुविधा चालू हो जाती है. अगर कॉन्फ़िगर किया गया है, तो ट्रांसक्रिप्ट, आउटपुट ऑडियो के लिए तय किए गए भाषा कोड के मुताबिक होती है. |
proactivity |
ज़रूरी नहीं. यह कुकी, मॉडल के सुझाव देने की सुविधा को कॉन्फ़िगर करती है. इससे मॉडल को इनपुट का तुरंत जवाब देने और काम के न होने वाले इनपुट को अनदेखा करने में मदद मिलती है. |
historyConfig |
ज़रूरी नहीं. यह कुकी, क्लाइंट और सर्वर के बीच इतिहास को शेयर करने की सुविधा को कॉन्फ़िगर करती है. |
BidiGenerateContentSetupComplete
इस टाइप में कोई फ़ील्ड नहीं है.
यह क्लाइंट से मिले BidiGenerateContentSetup मैसेज के जवाब में भेजा जाता है.
BidiGenerateContentToolCall
क्लाइंट से functionCalls को लागू करने का अनुरोध करें और मैच करने वाले id के साथ जवाब दिखाएं.
| फ़ील्ड | |
|---|---|
functionCalls[] |
सिर्फ़ आउटपुट के लिए. वह फ़ंक्शन कॉल जिसे एक्ज़ीक्यूट करना है. |
BidiGenerateContentToolCallCancellation
क्लाइंट को सूचना दी जाती है कि पहले जारी किया गया ToolCallMessage, तय किए गए id के साथ लागू नहीं किया जाना चाहिए और इसे रद्द कर दिया जाना चाहिए. अगर टूल कॉल के कुछ साइड इफ़ेक्ट हुए हैं, तो क्लाइंट टूल कॉल को पहले जैसा करने की कोशिश कर सकते हैं. यह मैसेज सिर्फ़ उन मामलों में दिखता है जहां क्लाइंट, सर्वर के टर्न में रुकावट डालते हैं.
| फ़ील्ड | |
|---|---|
ids[] |
सिर्फ़ आउटपुट के लिए. रद्द किए जाने वाले टूल कॉल के आईडी. |
BidiGenerateContentToolResponse
क्लाइंट ने सर्वर से मिले ToolCall का जवाब जनरेट किया. id फ़ील्ड की मदद से, हर FunctionResponse ऑब्जेक्ट को उसके FunctionCall ऑब्जेक्ट से मैच किया जाता है.
ध्यान दें कि यूनेरी और सर्वर-स्ट्रीमिंग GenerateContent API में, फ़ंक्शन कॉल करने की सुविधा Content हिस्सों को बदलकर काम करती है. वहीं, बिडी GenerateContent API में, फ़ंक्शन कॉल करने की सुविधा मैसेज के इस खास सेट के ज़रिए काम करती है.
| फ़ील्ड | |
|---|---|
functionResponses[] |
ज़रूरी नहीं. फ़ंक्शन कॉल का जवाब. |
BidiGenerateContentTranscription
ऑडियो (इनपुट या आउटपुट) को ट्रांसक्राइब करना.
| फ़ील्ड | |
|---|---|
text |
ट्रांसक्रिप्शन टेक्स्ट. |
languageCode |
ट्रांसक्रिप्ट का BCP-47 भाषा कोड. |
ContextWindowCompressionConfig
यह कॉन्टेक्स्ट विंडो कंप्रेस करने की सुविधा चालू करता है. यह मॉडल की कॉन्टेक्स्ट विंडो को मैनेज करने का एक तरीका है, ताकि यह तय की गई लंबाई से ज़्यादा न हो.
| फ़ील्ड | |
|---|---|
यूनियन फ़ील्ड compressionMechanism. कॉन्टेक्स्ट विंडो को कंप्रेस करने के लिए इस्तेमाल किया गया तरीका. compressionMechanism इनमें से सिर्फ़ एक हो सकता है: |
|
slidingWindow |
स्लाइडिंग-विंडो मैकेनिज़्म. |
triggerTokens |
कॉन्टेक्स्ट विंडो कंप्रेस करने की सुविधा को ट्रिगर करने के लिए, टर्न शुरू होने से पहले ज़रूरी टोकन की संख्या. इसका इस्तेमाल, क्वालिटी और लेटेन्सी के बीच संतुलन बनाने के लिए किया जा सकता है. ऐसा इसलिए, क्योंकि कॉन्टेक्स्ट विंडो छोटी होने पर, मॉडल के जवाब जल्दी मिल सकते हैं. हालांकि, कंप्रेस करने की किसी भी कार्रवाई से, कुछ समय के लिए लेटेन्सी बढ़ जाएगी. इसलिए, इन्हें बार-बार ट्रिगर नहीं किया जाना चाहिए. अगर इसे सेट नहीं किया जाता है, तो डिफ़ॉल्ट रूप से यह मॉडल की कॉन्टेक्स्ट विंडो की सीमा का 80% होता है. इससे, अगले उपयोगकर्ता के अनुरोध/मॉडल के जवाब के लिए 20% टोकन बचते हैं. |
EndSensitivity
इससे यह तय होता है कि बोली खत्म होने का पता कैसे लगाया जाए.
| Enums | |
|---|---|
END_SENSITIVITY_UNSPECIFIED |
डिफ़ॉल्ट रूप से, END_SENSITIVITY_HIGH पर सेट होता है. |
END_SENSITIVITY_HIGH |
अपने-आप बोली पहचानने की सुविधा, अक्सर बोली को खत्म कर देती है. |
END_SENSITIVITY_LOW |
अपने-आप पहचान होने की सुविधा, बोली को कम बार खत्म करती है. |
GoAway
सूचना कि सर्वर जल्द ही डिसकनेक्ट हो जाएगा.
| फ़ील्ड | |
|---|---|
timeLeft |
कनेक्शन बंद होने से पहले का समय, ABORTED के तौर पर दिखेगा. यह अवधि, मॉडल के हिसाब से तय की गई कम से कम अवधि से कभी कम नहीं होगी. यह अवधि, मॉडल के लिए तय की गई दर की सीमाओं के साथ बताई जाएगी. |
HistoryConfig
इतिहास का कॉन्फ़िगरेशन.
इस मैसेज को सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.historyConfig के तौर पर शामिल किया गया है. यह कुकी, इतिहास के मैसेज के एक्सचेंज को कॉन्फ़िगर करती है.
| फ़ील्ड | |
|---|---|
initialHistoryInClientContent |
ज़रूरी नहीं. अगर यह वैल्यू सही है, तो |
ProactivityConfig
यह कुकी, सक्रियता से जुड़ी सुविधाओं के लिए कॉन्फ़िगर की जाती है.
| फ़ील्ड | |
|---|---|
proactiveAudio |
ज़रूरी नहीं. इस सेटिंग के चालू होने पर, मॉडल को यह अधिकार होता है कि वह आखिरी प्रॉम्प्ट का जवाब न दे. उदाहरण के लिए, इससे मॉडल को कॉन्टेक्स्ट से बाहर की बातचीत को अनदेखा करने या उपयोगकर्ता की ओर से अब तक कोई अनुरोध न किए जाने पर चुप रहने की अनुमति मिलती है. |
RealtimeInputConfig
यह कुकी, BidiGenerateContent में रीयलटाइम इनपुट के व्यवहार को कॉन्फ़िगर करती है.
| फ़ील्ड | |
|---|---|
automaticActivityDetection |
ज़रूरी नहीं. अगर इसे सेट नहीं किया जाता है, तो गतिविधि का अपने-आप पता चलने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर आवाज़ का अपने-आप पता चलने की सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे. |
activityHandling |
ज़रूरी नहीं. इससे पता चलता है कि गतिविधि का क्या असर हुआ. |
turnCoverage |
ज़रूरी नहीं. इससे यह तय होता है कि उपयोगकर्ता के टर्न में कौनसी जानकारी शामिल की जाएगी. |
SessionResumptionConfig
सेशन फिर से शुरू करने का कॉन्फ़िगरेशन.
इस मैसेज को सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.sessionResumption के तौर पर शामिल किया गया है. अगर कॉन्फ़िगर किया गया है, तो सर्वर SessionResumptionUpdate मैसेज भेजेगा.
| फ़ील्ड | |
|---|---|
handle |
पिछले सेशन का हैंडल. अगर यह कुकी मौजूद नहीं है, तो नया सेशन बनाया जाता है. सेशन हैंडल, पिछले कनेक्शन में मौजूद |
SessionResumptionUpdate
सेशन फिर से शुरू होने की स्थिति को अपडेट करना.
यह कुकी सिर्फ़ तब भेजी जाती है, जब BidiGenerateContentSetup.sessionResumption सेट किया गया हो.
| फ़ील्ड | |
|---|---|
newHandle |
नया हैंडल, जो ऐसी स्थिति को दिखाता है जिसे फिर से शुरू किया जा सकता है. अगर |
resumable |
अगर मौजूदा सेशन को इस समय फिर से शुरू किया जा सकता है, तो यह वैल्यू सही होती है. सेशन के कुछ हिस्सों में, वीडियो को फिर से शुरू नहीं किया जा सकता. उदाहरण के लिए, जब मॉडल फ़ंक्शन कॉल कर रहा हो या जनरेट कर रहा हो. इस स्थिति में, पिछले सेशन के टोकन का इस्तेमाल करके सेशन को फिर से शुरू करने पर, कुछ डेटा का नुकसान होगा. ऐसे मामलों में, |
SlidingWindow
स्लाइडिंग विंडो का तरीका, कॉन्टेक्स्ट विंडो की शुरुआत में मौजूद कॉन्टेंट को हटाकर काम करता है. जवाब में शामिल कॉन्टेक्स्ट हमेशा USER की भूमिका वाले टर्न की शुरुआत से शुरू होगा. सिस्टम के निर्देश और कोई भी BidiGenerateContentSetup.prefixTurns, जवाब की शुरुआत में हमेशा मौजूद रहेगा.
| फ़ील्ड | |
|---|---|
targetTokens |
टोकन की टारगेट संख्या, जिसे बनाए रखना है. डिफ़ॉल्ट वैल्यू 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 |
ज़रूरी है. अनुवाद के लिए टारगेट भाषा. BCP-47 भाषा कोड (जैसे, "en", "es", "fr") को वैल्यू के तौर पर इस्तेमाल किया जा सकता है. |
echoTargetLanguage |
ज़रूरी नहीं. अगर इस विकल्प को 'सही है' पर सेट किया जाता है, तो टारगेट की गई भाषा में बोले जाने पर मॉडल ऑडियो जनरेट करेगा. इसका मतलब है कि यह इनपुट को दोहराएगा. अगर यह वैल्यू 'गलत है', तो हम टारगेट की गई भाषा के लिए ऑडियो नहीं बनाएंगे. |
UrlContextMetadata
यूआरएल के कॉन्टेक्स्ट को वापस पाने वाले टूल से जुड़ा मेटाडेटा.
| फ़ील्ड | |
|---|---|
urlMetadata[] |
यूआरएल कॉन्टेक्स्ट की सूची. |
UsageMetadata
जवाबों के इस्तेमाल से जुड़ा मेटाडेटा.
| फ़ील्ड | |
|---|---|
promptTokenCount |
सिर्फ़ आउटपुट के लिए. प्रॉम्प्ट में मौजूद टोकन की संख्या. |
cachedContentTokenCount |
प्रॉम्प्ट के कैश मेमोरी में सेव किए गए हिस्से (कैश मेमोरी में सेव किया गया कॉन्टेंट) में मौजूद टोकन की संख्या |
responseTokenCount |
सिर्फ़ आउटपुट के लिए. जवाब के तौर पर जनरेट किए गए सभी संभावित विकल्पों में मौजूद टोकन की कुल संख्या. |
toolUsePromptTokenCount |
सिर्फ़ आउटपुट के लिए. टूल का इस्तेमाल करने के लिए दिए गए प्रॉम्प्ट में मौजूद टोकन की संख्या. |
thoughtsTokenCount |
सिर्फ़ आउटपुट के लिए. सोचने वाले मॉडल के लिए, आइडिया के टोकन की संख्या. |
totalTokenCount |
सिर्फ़ आउटपुट के लिए. जनरेट करने के अनुरोध (प्रॉम्प्ट + जवाब के संभावित उम्मीदवार) के लिए टोकन की कुल संख्या. |
promptTokensDetails[] |
सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में प्रोसेस की गई मॉडेलिटी की सूची. |
cacheTokensDetails[] |
सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में मौजूद, कैश मेमोरी में सेव किए गए कॉन्टेंट के मोड की सूची. |
responseTokensDetails[] |
सिर्फ़ आउटपुट के लिए. जवाब में मिली मॉडेलिटी की सूची. |
toolUsePromptTokensDetails[] |
सिर्फ़ आउटपुट के लिए. टूल इस्तेमाल करने के अनुरोध के इनपुट के लिए प्रोसेस की गई मॉडेलिटी की सूची. |
कुछ समय के लिए पुष्टि करने वाले टोकन
अस्थायी पुष्टि करने वाले टोकन पाने के लिए, AuthTokenService.CreateToken को कॉल करें. इसके बाद, इनका इस्तेमाल GenerativeService.BidiGenerateContentConstrained के साथ किया जा सकता है. इसके लिए, टोकन को access_token क्वेरी पैरामीटर में पास करें या एचटीटीपी Authorization हेडर में "Token" प्रीफ़िक्स के साथ पास करें.
CreateAuthTokenRequest
कुछ समय के लिए मान्य ऑथेंटिकेशन टोकन बनाएं.
| फ़ील्ड | |
|---|---|
authToken |
ज़रूरी है. बनाया जाने वाला टोकन. |
AuthToken
यह कुछ समय के लिए मान्य ऑथेंटिकेशन टोकन बनाने का अनुरोध है.
| फ़ील्ड | |
|---|---|
name |
सिर्फ़ आउटपुट के लिए. आइडेंटिफ़ायर. टोकन. |
expireTime |
ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह एक वैकल्पिक समय है. इस समय के बाद, जनरेट किए गए टोकन का इस्तेमाल करने पर, BidiGenerateContent सेशन में मौजूद मैसेज अस्वीकार कर दिए जाएंगे. (Gemini, इस समय के बाद सेशन को पहले से ही बंद कर सकता है.) अगर इसे सेट नहीं किया जाता है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 30 मिनट पर सेट हो जाएगा. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद से पहले की होनी चाहिए. |
newSessionExpireTime |
ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह वह समय है जिसके बाद, इस अनुरोध से मिले टोकन का इस्तेमाल करके बनाए गए नए Live API सेशन अस्वीकार कर दिए जाएंगे. अगर इसे सेट नहीं किया जाता है, तो आने वाले समय में इसकी डिफ़ॉल्ट वैल्यू 60 सेकंड होगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद से पहले की होनी चाहिए. |
fieldMask |
ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. अगर field_mask खाली है और अगर field_mask खाली है और अगर field_mask खाली नहीं है, तो |
यूनियन फ़ील्ड config. नतीजे के तौर पर मिले टोकन के लिए, तरीके के हिसाब से कॉन्फ़िगरेशन. config इनमें से सिर्फ़ एक हो सकता है: |
|
bidiGenerateContentSetup |
ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. |
uses |
ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. टोकन का इस्तेमाल कितनी बार किया जा सकता है. अगर यह वैल्यू शून्य है, तो कोई सीमा लागू नहीं होती. लाइव एपीआई सेशन को फिर से शुरू करने को इस्तेमाल नहीं माना जाता. अगर कोई वैल्यू नहीं दी जाती है, तो डिफ़ॉल्ट रूप से इसकी वैल्यू 1 होती है. |
सामान्य टाइप के बारे में ज़्यादा जानकारी
आम तौर पर इस्तेमाल किए जाने वाले एपीआई रिसॉर्स टाइप Blob,
Content, FunctionCall, FunctionResponse, GenerationConfig,
GroundingMetadata, ModalityTokenCount, और Tool के बारे में ज़्यादा जानने के लिए, कॉन्टेंट जनरेट करना लेख पढ़ें.