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
- Lexoni udhëzuesin e plotë të Aftësive Live API për aftësitë dhe konfigurimet kryesore; duke përfshirë Zbulimin e Aktivitetit të Zërit dhe veçoritë audio vendase.
- Lexoni udhëzuesin e përdorimit të mjetit për të mësuar se si të integroni Live API me mjetet dhe thirrjen e funksioneve.
- Lexoni udhëzuesin e menaxhimit të sesioneve për menaxhimin e bisedave të gjata.
- Lexoni udhëzuesin e tokenëve Ephemeral për autentifikim të sigurt në aplikacionet klient-me-server .
- Për më shumë informacion rreth API-t themelor të WebSockets, shihni referencën e WebSockets API .