Live API की सुविधाओं के बारे में गाइड

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

शुरू करने से पहले

  • बुनियादी कॉन्सेप्ट के बारे में जानें: अगर आपने अब तक ऐसा नहीं किया है, तो सबसे पहले Live API का इस्तेमाल शुरू करना पेज पढ़ें. इससे आपको Live API के बुनियादी सिद्धांतों, इसके काम करने के तरीके, और लागू करने के अलग-अलग तरीकों के बारे में जानकारी मिलेगी.
  • AI Studio में Live API आज़माएं: ऐप्लिकेशन बनाना शुरू करने से पहले, Google AI Studio में Live API आज़माएं. इससे आपको मदद मिल सकती है. Google AI Studio में Live API का इस्तेमाल करने के लिए, स्ट्रीम करें को चुनें.

मॉडल की तुलना

यहां दी गई टेबल में, Gemini 3.1 Flash Live Preview और Gemini 2.5 Flash Live Preview मॉडल के बीच के मुख्य अंतर के बारे में बताया गया है:

सुविधा Gemini 3.1 Flash की लाइव प्रीव्यू सुविधा Gemini 2.5 Flash की लाइव बातचीत की सुविधा का प्रीव्यू
सोच-विचार यह thinkingLevel का इस्तेमाल करके, जवाब देने के लिए जानकारी के स्तर को कंट्रोल करता है. इसके लिए, minimal, low, medium, और high जैसी सेटिंग का इस्तेमाल किया जाता है. डिफ़ॉल्ट रूप से, इसे minimal पर सेट किया जाता है, ताकि इंतज़ार के समय को कम किया जा सके. सोचने के लेवल और बजट देखें. यह thinkingBudget का इस्तेमाल करके, थिंकिंग टोकन की संख्या सेट करता है. डाइनैमिक थिंकिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए, thinkingBudget को 0 पर सेट करें. सोचने के लेवल और बजट देखें.
जवाब पाना किसी एक सर्वर इवेंट में, कॉन्टेंट के कई हिस्से एक साथ शामिल हो सकते हैं. उदाहरण के लिए, inlineData और ट्रांसक्रिप्ट. पक्का करें कि आपका कोड, हर इवेंट के सभी हिस्सों को प्रोसेस करता हो, ताकि कोई भी कॉन्टेंट छूट न जाए. हर सर्वर इवेंट में, कॉन्टेंट का सिर्फ़ एक हिस्सा होता है. पार्ट अलग-अलग इवेंट में डिलीवर किए जाते हैं.
क्लाइंट का कॉन्टेंट send_client_content का इस्तेमाल सिर्फ़ शुरुआती कॉन्टेक्स्ट के इतिहास को सीड करने के लिए किया जा सकता है. इसके लिए, सेशन कॉन्फ़िगरेशन में initial_history_in_client_content को सेट करना ज़रूरी है. बातचीत के दौरान टेक्स्ट अपडेट भेजने के लिए, send_realtime_input का इस्तेमाल करें. send_client_content की सुविधा, बातचीत के दौरान कभी भी इस्तेमाल की जा सकती है. इससे कॉन्टेंट के अपडेट भेजे जा सकते हैं और कॉन्टेक्स्ट सेट किया जा सकता है.
मुड़ने की जानकारी डिफ़ॉल्ट रूप से, यह TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO पर सेट होता है. मॉडल के जवाब में, ऑडियो से जुड़ी गतिविधि और सभी वीडियो फ़्रेम शामिल होते हैं. डिफ़ॉल्ट रूप से, यह TURN_INCLUDES_ONLY_ACTIVITY पर सेट होता है. मॉडल के जवाब में, सिर्फ़ पता लगाई गई गतिविधि शामिल होती है.
कस्टम वीएडी (activity_start/activity_end) काम करता है. अपने-आप VAD होने की सुविधा बंद करें. साथ ही, बारी के हिसाब से बोलने की सीमा को कंट्रोल करने के लिए, मैन्युअल तरीके से activityStart और activityEnd मैसेज भेजें. काम करता है. अपने-आप VAD होने की सुविधा बंद करें. साथ ही, बारी के हिसाब से बोलने की सीमा को कंट्रोल करने के लिए, मैन्युअल तरीके से activityStart और activityEnd मैसेज भेजें.
वीएडी का अपने-आप कॉन्फ़िगरेशन होना काम करता है. start_of_speech_sensitivity, end_of_speech_sensitivity, prefix_padding_ms, और silence_duration_ms जैसे पैरामीटर कॉन्फ़िगर करें. काम करता है. start_of_speech_sensitivity, end_of_speech_sensitivity, prefix_padding_ms, और silence_duration_ms जैसे पैरामीटर कॉन्फ़िगर करें.
एसिंक्रोनस फ़ंक्शन कॉलिंग (behavior: NON_BLOCKING) यह सुविधा उपलब्ध नहीं है. फ़ंक्शन कॉलिंग सिर्फ़ क्रम से की जा सकती है. जब तक टूल का जवाब नहीं भेजा जाता, तब तक मॉडल जवाब देना शुरू नहीं करेगा. काम करता है. किसी फ़ंक्शन के एलान पर behavior को NON_BLOCKING पर सेट करें, ताकि फ़ंक्शन के चलने के दौरान मॉडल इंटरैक्ट करना जारी रख सके. यह कंट्रोल करें कि मॉडल, scheduling पैरामीटर (INTERRUPT, WHEN_IDLE या SILENT) के साथ जवाबों को कैसे हैंडल करे.
आवाज़ सुनकर ज़रूरत के मुताबिक जवाब देने की सुविधा काम नहीं करता है काम करता है. इस सुविधा के चालू होने पर, मॉडल यह तय कर सकता है कि अगर इनपुट कॉन्टेंट काम का नहीं है, तो जवाब न दिया जाए. proactivity कॉन्फ़िगरेशन में proactive_audio को true पर सेट करें. इसके लिए, v1beta की ज़रूरत होती है.
अफ़ेक्टिव डायलॉग काम नहीं करता है काम करता है. मॉडल, जवाब देने की अपनी स्टाइल को इनपुट के एक्सप्रेशन और टोन के हिसाब से बदलता है. सेशन कॉन्फ़िगरेशन में enable_affective_dialog को true पर सेट करें. इसके लिए, v1beta की ज़रूरत होती है.

Gemini 2.5 Flash Live से Gemini 3.1 Flash Live पर माइग्रेट करने के लिए, माइग्रेशन गाइड देखें.

कनेक्शन सेट अप करना

यहां दिए गए उदाहरण में, एपीआई पासकोड की मदद से कनेक्शन बनाने का तरीका बताया गया है:

Python

import asyncio
from google import genai

client = genai.Client()

model = "gemini-3.1-flash-live-preview"
config = {"response_modalities": ["AUDIO"]}

async def main():
    async with client.aio.live.connect(model=model, config=config) as session:
        print("Session started")
        # Send content...

if __name__ == "__main__":
    asyncio.run(main())

JavaScript

import { GoogleGenAI, Modality } from '@google/genai';

const ai = new GoogleGenAI({});
const model = 'gemini-3.1-flash-live-preview';
const config = { responseModalities: [Modality.AUDIO] };

async function main() {

  const session = await ai.live.connect({
    model: model,
    callbacks: {
      onopen: function () {
        console.debug('Opened');
      },
      onmessage: function (message) {
        console.debug(message);
      },
      onerror: function (e) {
        console.debug('Error:', e.message);
      },
      onclose: function (e) {
        console.debug('Close:', e.reason);
      },
    },
    config: config,
  });

  console.debug("Session started");
  // Send content...

  session.close();
}

main();

इंटरैक्शन के तरीके

यहां दिए गए सेक्शन में, Live API में उपलब्ध अलग-अलग इनपुट और आउटपुट मोड के उदाहरण और उनसे जुड़ी जानकारी दी गई है.

ऑडियो भेजना

ऑडियो को रॉ पीसीएम डेटा (रॉ 16-बिट पीसीएम ऑडियो, 16kHz, लिटिल-एंडियन) के तौर पर भेजा जाना चाहिए.

Python

# Assuming 'chunk' is your raw PCM audio bytes
await session.send_realtime_input(
    audio=types.Blob(
        data=chunk,
        mime_type="audio/pcm;rate=16000"
    )
)

JavaScript

// Assuming 'chunk' is a Buffer of raw PCM audio
session.sendRealtimeInput({
  audio: {
    data: chunk.toString('base64'),
    mimeType: 'audio/pcm;rate=16000'
  }
});

ऑडियो फ़ॉर्मैट

Live API में ऑडियो डेटा हमेशा रॉ, लिटिल-एंडियन, और 16-बिट पीसीएम होता है. ऑडियो डिवाइस हमेशा 24 किलोहर्ट्ज़ के सैंपल रेट का इस्तेमाल करता है. इनपुट ऑडियो मूल रूप से 16 किलोहर्ट्ज़ का होता है. हालांकि, अगर ज़रूरत होती है, तो Live API इसे फिर से सैंपल करता है. इसलिए, कोई भी सैंपल रेट भेजा जा सकता है. इनपुट ऑडियो की सैंपल दर बताने के लिए, ऑडियो वाले हर Blob के एमआईएमई टाइप को audio/pcm;rate=16000 जैसे किसी वैल्यू पर सेट करें.

ऑडियो पाना

मॉडल से मिलने वाले ऑडियो जवाब, डेटा के हिस्सों के तौर पर मिलते हैं.

Python

async for response in session.receive():
    if response.server_content and response.server_content.model_turn:
        for part in response.server_content.model_turn.parts:
            if part.inline_data:
                audio_data = part.inline_data.data
                # Process or play the audio data

JavaScript

// Inside the onmessage callback
const content = response.serverContent;
if (content?.modelTurn?.parts) {
  for (const part of content.modelTurn.parts) {
    if (part.inlineData) {
      const audioData = part.inlineData.data;
      // Process or play audioData (base64 encoded string)
    }
  }
}

टेक्स्ट भेजा जा रहा है

टेक्स्ट को send_realtime_input (Python) या sendRealtimeInput (JavaScript) का इस्तेमाल करके भेजा जा सकता है.

Python

await session.send_realtime_input(text="Hello, how are you?")

JavaScript

session.sendRealtimeInput({
  text: 'Hello, how are you?'
});

वीडियो भेजा जा रहा है

वीडियो फ़्रेम को अलग-अलग इमेज (जैसे, JPEG या PNG) के तौर पर भेजा जाता है. ऐसा एक तय फ़्रेम रेट (ज़्यादा से ज़्यादा एक फ़्रेम प्रति सेकंड) पर किया जाता है.

Python

# Assuming 'frame' is your JPEG-encoded image bytes
await session