Get started with Gemini Live API using the Google GenAI SDK

API-ja Gemini Live lejon ndërveprim në kohë reale, dypalësh me modelet Gemini, duke mbështetur hyrjet audio, video dhe tekst, si dhe daljet audio native. Ky udhëzues shpjegon se si të integrohet me API-n duke përdorur SDK-në Google GenAI në serverin tuaj.

Përmbledhje

API-ja Gemini Live përdor WebSockets për komunikim në kohë reale. SDK-ja google-genai ofron një ndërfaqe asinkrone të nivelit të lartë për menaxhimin e këtyre lidhjeve.

Konceptet kryesore:

  • Sesioni : Një lidhje e vazhdueshme me modelin.
  • Konfigurimi : Konfigurimi i modaliteteve (audio/tekst), zëri dhe udhëzimet e sistemit.
  • Hyrje në kohë reale : Dërgimi i kornizave audio dhe video si pika.

Duke u lidhur me API-në Live

Filloni një seancë API Live me një çelës API:

Python

import asyncio
from google import genai

client = genai.Client(api_key="YOUR_API_KEY")

model = "gemini-2.5-flash-native-audio-preview-12-2025"
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({ apiKey: "YOUR_API_KEY"});
const model = 'gemini-2.5-flash-native-audio-preview-12-2025';
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();

Duke dërguar mesazh

Teksti mund të dërgohet duke përdorur send_realtime_input (Python) ose sendRealtimeInput (JavaScript).

Python

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

JavaScript

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

Duke dërguar audion

Audio duhet të dërgohet si të dhëna të papërpunuara PCM (audio PCM 16-bit i papërpunuar, 16kHz, little-endian).

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'
  }
});

Për një shembull se si të merrni audion nga pajisja klient (p.sh. shfletuesi) shihni shembullin nga fillimi në fund në GitHub .

Duke dërguar videon

Kornizat video dërgohen si imazhe individuale (p.sh., JPEG ose PNG) me një shpejtësi specifike të kuadrove (maksimumi 1 kornizë për sekondë).

Python

# Assuming 'frame' is your JPEG-encoded image bytes
await session.send_realtime_input(
    video=types.Blob(
        data=frame,
        mime_type="image/jpeg"
    )
)

JavaScript

// Assuming 'frame' is a Buffer of JPEG-encoded image data
session.sendRealtimeInput({
  video: {
    data: frame.toString('base64'),
    mimeType: 'image/jpeg'
  }
});

Për një shembull se si të merrni videon nga pajisja klient (p.sh. shfletuesi) shihni shembullin nga fillimi në fund në GitHub .

Po merr audion

Përgjigjet audio të modelit merren si pjesë të të dhënave.

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)
    }
  }
}

Shihni shembullin e aplikacionit në GitHub për të mësuar se si ta merrni audion në serverin tuaj dhe ta luani atë në shfletues .

Duke marrë mesazh

Transkriptimet si për të dhënat hyrëse të përdoruesit ashtu edhe për të dhënat dalëse të modelit janë të disponueshme në përmbajtjen e serverit.

Python

async for response in session.receive():
    content = response.server_content
    if content:
        if content.input_transcription:
            print(f"User: {content.input_transcription.text}")
        if content.output_transcription:
            print(f"Gemini: {content.output_transcription.text}")

JavaScript

// Inside the onmessage callback
const content = response.serverContent;
if (content?.inputTranscription) {
  console.log('User:', content.inputTranscription.text);
}
if (content?.outputTranscription) {
  console.log('Gemini:', content.outputTranscription.text);
}

Trajtimi i thirrjeve të mjeteve

API mbështet thirrjen e mjeteve (thirrjen e funksionit). Kur modeli kërkon një thirrje të mjeteve, duhet ta ekzekutoni funksionin dhe ta dërgoni përgjigjen mbrapsht.

Python

async for response in session.receive():
    if response.tool_call:
        function_responses = []
        for fc in response.tool_call.function_calls:
            # 1. Execute the function locally
            result = my_tool_function(**fc.args)

            # 2. Prepare the response
            function_responses.append(types.FunctionResponse(
                name=fc.name,
                id=fc.id,
                response={"result": result}
            ))

        # 3. Send the tool response back to the session
        await session.send_tool_response(function_responses=function_responses)

JavaScript

// Inside the onmessage callback
if (response.toolCall) {
  const functionResponses = [];
  for (const fc of response.toolCall.functionCalls) {
    const result = myToolFunction(fc.args);
    functionResponses.push({
      name: fc.name,
      id: fc.id,
      response: { result }
    });
  }
  session.sendToolResponse({ functionResponses });
}

Çfarë vjen më pas