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[] |
ज़रूरी नहीं. मीडिया इनपुट के लिए, इनलाइन किए गए बाइट का डेटा. एक से ज़्यादा DEPRECATED: इसके बजाय, |
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 |
सिर्फ़ आउटपुट के लिए. अगर यह वैल्यू सही है, तो इसका मतलब है कि मॉडल कॉन्टेंट जनरेट नहीं कर रहा है.ऐसा इसलिए, क्योंकि वह उपयोगकर्ता से ज़्यादा इनपुट मिलने का इंतज़ार कर रहा है. उदाहरण के लिए, मॉडल को उम्मीद है कि उपयोगकर्ता बातचीत जारी रखेगा. |
interactionStatus |
सिर्फ़ आउटपुट के लिए. लाइव सेशन की मौजूदा गतिविधि का स्टेटस. इसे हमेशा |
modelTurn |
सिर्फ़ आउटपुट के लिए. यह वह कॉन्टेंट है जिसे मॉडल ने उपयोगकर्ता के साथ मौजूदा बातचीत के दौरान जनरेट किया है. |
BidiGenerateContentServerMessage
BidiGenerateContent कॉल के लिए जवाब का मैसेज.
| फ़ील्ड | |
|---|---|
usageMetadata |
सिर्फ़ आउटपुट के लिए. जवाबों के इस्तेमाल से जुड़ा मेटाडेटा. |
voiceActivity |
सिर्फ़ आउटपुट के लिए. ऑडियो स्ट्रीम में आवाज़ का पता चला. |
यूनियन फ़ील्ड messageType. मैसेज किस तरह का है. messageType इनमें से सिर्फ़ एक हो सकता है: |
|
setupComplete |
सिर्फ़ आउटपुट के लिए. यह ईमेल, सेटअप पूरा होने पर क्लाइंट से मिले |
serverContent |
सिर्फ़ आउटपुट के लिए. क्लाइंट के मैसेज के जवाब में मॉडल से जनरेट किया गया कॉन्टेंट. |
toolCall |
सिर्फ़ आउटपुट के लिए. क्लाइंट से |
toolCallCancellation |
सिर्फ़ आउटपुट के लिए. क्लाइंट के लिए सूचना. इसमें बताया जाता है कि पहले जारी किए गए |
goAway |
सिर्फ़ आउटपुट के लिए. यह सूचना कि सर्वर जल्द ही डिसकनेक्ट हो जाएगा. |
sessionResumptionUpdate |
सिर्फ़ आउटपुट के लिए. सेशन फिर से शुरू होने की स्थिति को अपडेट करना. |
BidiGenerateContentSetup
यह मैसेज, पहली (और सिर्फ़ पहली) BidiGenerateContentClientMessage में भेजा जाएगा. इसमें ऐसा कॉन्फ़िगरेशन होता है जो स्ट्रीमिंग आरपीसी के दौरान लागू होगा.
क्लाइंट को कोई अन्य मैसेज भेजने से पहले, BidiGenerateContentSetupComplete मैसेज का इंतज़ार करना चाहिए.
| फ़ील्ड | |
|---|---|
model |
ज़रूरी है. मॉडल के संसाधन का नाम. यह मॉडल के इस्तेमाल के लिए आईडी के तौर पर काम करता है. फ़ॉर्मैट: |
generationConfig |
ज़रूरी नहीं. जनरेट करने का कॉन्फ़िगरेशन. इन फ़ील्ड का इस्तेमाल नहीं किया जा सकता:
|
systemInstruction |
ज़रूरी नहीं. उपयोगकर्ता ने मॉडल को सिस्टम के निर्देश दिए हैं. ध्यान दें: जवाब के हर हिस्से में सिर्फ़ टेक्स्ट का इस्तेमाल किया जाना चाहिए. साथ ही, हर हिस्से का कॉन्टेंट अलग पैराग्राफ़ में होना चाहिए. |
tools[] |
ज़रूरी नहीं.
|
realtimeInputConfig |
ज़रूरी नहीं. यह कुकी, रीयलटाइम इनपुट को मैनेज करने के लिए कॉन्फ़िगर की जाती है. |
sessionResumption |
ज़रूरी नहीं. यह कुकी, सेशन को फिर से शुरू करने के तरीके को कॉन्फ़िगर करती है. अगर इसे शामिल किया जाता है, तो सर्वर |
contextWindowCompression |
ज़रूरी नहीं. यह कुकी, कॉन्टेक्स्ट विंडो को कंप्रेस करने के तरीके को कॉन्फ़िगर करती है. अगर इसे शामिल किया जाता है, तो कॉन्फ़िगर की गई लंबाई से ज़्यादा होने पर सर्वर, कॉन्टेक्स्ट का साइज़ अपने-आप कम कर देगा. |
inputAudioTranscription |
ज़रूरी नहीं. अगर यह कुकी सेट है, तो बोलकर दिए गए इनपुट को लेख में बदलने की सुविधा चालू हो जाती है. अगर ऑडियो को टेक्स्ट में बदलने की सुविधा कॉन्फ़िगर की गई है, तो ऑडियो को टेक्स्ट में बदलने की सुविधा, ऑडियो की भाषा के हिसाब से काम करती है. |
outputAudioTranscription |
ज़रूरी नहीं. यह विकल्प सेट होने पर, मॉडल के ऑडियो आउटपुट को ट्रांसक्राइब किया जा सकता है. अगर कॉन्फ़िगर किया गया है, तो ट्रांसक्रिप्ट, आउटपुट ऑडियो के लिए तय किए गए भाषा कोड के मुताबिक होती है. |
proactivity |
ज़रूरी नहीं. यह कुकी, मॉडल के सुझाव देने की सुविधा को कॉन्फ़िगर करती है. इससे मॉडल को इनपुट का तुरंत जवाब देने और काम के न होने वाले इनपुट को अनदेखा करने की अनुमति मिलती है. |
historyConfig |
ज़रूरी नहीं. यह कुकी, क्लाइंट और सर्वर के बीच इतिहास के डेटा को शेयर करने की सुविधा को कॉन्फ़िगर करती है. |
labels |
ज़रूरी नहीं. अनुरोध के लिए, उपयोगकर्ता के तय किए गए मेटाडेटा वाले लेबल. ज़रूरी नहीं. लेबल, Cloud के यूनीफ़ाइड लेबल से जुड़ी ज़रूरी शर्तों के मुताबिक होने चाहिए: - लेबल कुंजियों की शुरुआत अक्षर से होनी चाहिए. - लेबल कुंजियों और वैल्यू में 63 से ज़्यादा वर्ण (यूनिकोड कोडपॉइंट) नहीं हो सकते. साथ ही, इनमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, अंडरस्कोर, और डैश इस्तेमाल किए जा सकते हैं. - इंटरनैशनल कैरेक्टर के इस्तेमाल की अनुमति है. इस्तेमाल करने का तरीका: - एग्रीगेटर से मिले सुरक्षा आइडेंटिफ़ायर: |
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 भाषा कोड. |
startOffset |
ज़रूरी नहीं. ऑडियो शुरू होने के समय के हिसाब से, ट्रांसक्रिप्शन शुरू होने का ऑफ़सेट. |
endOffset |
ज़रूरी नहीं. ऑडियो के शुरू होने के समय के हिसाब से, ट्रांसक्रिप्शन के खत्म होने का ऑफ़सेट. |
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 |
ज़रूरी नहीं. अगर यह सही है, तो |
InteractionStatus
लाइव सेशन की अलग-अलग ऐक्टिविटी स्टेट. यह फ़ील्ड हमेशा turnComplete के साथ भेजा जाता है. इससे यह पता चलता है कि सर्वर ने सभी प्रोसेस पूरी कर ली हैं या नहीं.
| Enums | |
|---|---|
INTERACTION_STATUS_UNSPECIFIED |
इंटरैक्शन की स्थिति के बारे में कोई जानकारी नहीं है. |
IN_PROGRESS |
सर्वर अब भी उपयोगकर्ता के इनपुट को प्रोसेस कर रहा है या बैकग्राउंड में काम कर रहा है. मॉडल से मिलने वाले ज़्यादा नतीजे यहां दिए जा सकते हैं. |
REQUIRES_ACTION |
अब इसका इस्तेमाल नहीं किया जाता: इसके बजाय, IDLE का इस्तेमाल करें. |
IDLE |
सर्वर ने सभी प्रोसेसिंग और बैकग्राउंड की वजहों को पूरा कर लिया है. |
ProactivityConfig
यह कॉन्फ़िगरेशन, सक्रियता बढ़ाने वाली सुविधाओं के लिए है.
| फ़ील्ड | |
|---|---|
proactiveAudio |
ज़रूरी नहीं. यह सुविधा चालू होने पर, मॉडल आखिरी प्रॉम्प्ट का जवाब देने से मना कर सकता है. उदाहरण के लिए, इससे मॉडल को बातचीत के संदर्भ से बाहर की स्पीच को अनदेखा करने या उपयोगकर्ता के अनुरोध न करने पर चुप रहने की अनुमति मिलती है. |
RealtimeInputConfig
यह नीति, BidiGenerateContent में रीयलटाइम इनपुट के व्यवहार को कॉन्फ़िगर करती है.
| फ़ील्ड | |
|---|---|
automaticActivityDetection |
ज़रूरी नहीं. अगर इसे सेट नहीं किया जाता है, तो गतिविधि का अपने-आप पता चलने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर आवाज़ का अपने-आप पता लगाने की सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे. |
activityHandling |
ज़रूरी नहीं. इससे पता चलता है कि गतिविधि का क्या असर पड़ा. |
turnCoverage |
ज़रूरी नहीं. इससे यह तय होता है कि उपयोगकर्ता के टर्न में कौनसा इनपुट शामिल किया गया है. |
interimTranscriptTimestampEnabled |
ज़रूरी नहीं. यह कुकी, कुछ समय के लिए उपलब्ध ट्रांसक्रिप्ट के टाइमस्टैंप को कॉन्फ़िगर करती है. |
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 |
ज़रूरी है. अनुवाद के लिए टारगेट वाली भाषा. बीसीपी-47 भाषा कोड (जैसे, "en", "es", "fr") को इस्तेमाल की जा सकने वाली वैल्यू के तौर पर इस्तेमाल किया जा सकता है. |
echoTargetLanguage |
ज़रूरी नहीं. अगर यह सही है, तो मॉडल टारगेट वाली भाषा में बोले गए शब्दों के लिए ऑडियो जनरेट करेगा. इसका मतलब है कि यह इनपुट को दोहराएगा. अगर यह वैल्यू 'गलत है' पर सेट है, तो हम टारगेट वाली भाषा के लिए ऑडियो नहीं बनाएंगे. |
UrlContextMetadata
यूआरएल कॉन्टेक्स्ट को वापस पाने वाले टूल से जुड़ा मेटाडेटा.
| फ़ील्ड | |
|---|---|
urlMetadata[] |
यूआरएल कॉन्टेक्स्ट की सूची. |
UsageMetadata
जवाबों के इस्तेमाल से जुड़ा मेटाडेटा.
| फ़ील्ड | |
|---|---|
promptTokenCount |
सिर्फ़ आउटपुट के लिए. प्रॉम्प्ट में मौजूद टोकन की संख्या. |
cachedContentTokenCount |
प्रॉम्प्ट के कैश मेमोरी में सेव किए गए हिस्से (कैश मेमोरी में सेव किया गया कॉन्टेंट) में मौजूद टोकन की संख्या |
responseTokenCount |
सिर्फ़ आउटपुट के लिए. जनरेट किए गए जवाब के सभी संभावित विकल्पों में मौजूद टोकन की कुल संख्या. |
toolUsePromptTokenCount |
सिर्फ़ आउटपुट के लिए. टूल का इस्तेमाल करने के लिए दिए गए प्रॉम्प्ट में मौजूद टोकन की संख्या. |
thoughtsTokenCount |
सिर्फ़ आउटपुट के लिए. सूझ-बूझ वाले मॉडल के लिए, आइडिया के टोकन की संख्या. |
totalTokenCount |
सिर्फ़ आउटपुट के लिए. जनरेट करने के अनुरोध (प्रॉम्प्ट + जवाब के संभावित विकल्प) के लिए टोकन की कुल संख्या. |
promptTokensDetails[] |
सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में प्रोसेस की गई मॉडेलिटी की सूची. |
cacheTokensDetails[] |
सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में, कैश मेमोरी में सेव किए गए कॉन्टेंट के मोड की सूची. |
responseTokensDetails[] |
सिर्फ़ आउटपुट के लिए. जवाब में दिखाई गई मॉडेलिटी की सूची. |
toolUsePromptTokensDetails[] |
सिर्फ़ आउटपुट के लिए. उन मोडैलिटी की सूची जिन्हें टूल इस्तेमाल करने के अनुरोध के इनपुट के लिए प्रोसेस किया गया था. |
VoiceActivity
ऑडियो स्ट्रीम में आवाज़ का पता चला.
| फ़ील्ड | |
|---|---|
type |
सिर्फ़ आउटपुट के लिए. वीएडी(आवाज़ का पता लगाने की तकनीक) सिग्नल का टाइप. |
audioOffset |
सिर्फ़ आउटपुट के लिए. ऑडियो स्ट्रीम शुरू होने के समय के हिसाब से, ऑडियो में आवाज़ का पता चलने का समय. |
टाइप
वीएडी सिग्नल का टाइप.
| Enums | |
|---|---|
TYPE_UNSPECIFIED |
डिफ़ॉल्ट वैल्यू UNSPECIFIED है. |
ACTIVITY_START |
वाक्य की शुरुआत का सिग्नल. |
ACTIVITY_END |
वाक्य के आखिर में सिग्नल. |
कुछ समय के लिए मान्य पुष्टि करने वाले टोकन
अस्थायी पुष्टि करने वाले टोकन पाने के लिए, 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 के बारे में ज़्यादा जानने के लिए, कॉन्टेंट जनरेट करना लेख पढ़ें.