Comece a usar a API Live com o SDK de IA gen da Google

Este tutorial mostra como estabelecer ligação à API Live através da versão Python do SDK de IA gen da Google. Neste tutorial, vai configurar um Google Cloud projeto para usar a API Live com o SDK de IA gen., enviar um ficheiro de áudio para o modelo e receber áudio em resposta.

Antes de começar

Antes de poder enviar pedidos, tem de configurar a autenticação com a Vertex AI. Pode configurar a autenticação através de uma chave da API ou através das Credenciais padrão da aplicação (ADC).

Para este tutorial, a forma mais rápida de começar é usar uma chave da API:

Para obter instruções sobre como configurar a autenticação através do ADC, consulte o nosso guia de início rápido.

Instale o SDK de IA gen

Execute o seguinte comando para instalar a biblioteca google-genai:

pip install --upgrade google-genai

Configure variáveis de ambiente

Defina as variáveis de ambiente para o ID do projeto e a localização. Substitua PROJECT_ID pelo seu Google Cloud ID do projeto.

export GOOGLE_CLOUD_PROJECT=PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

Inicie uma sessão de áudio

Este exemplo estabelece uma sessão, transmite áudio a partir de um ficheiro e imprime o tamanho dos fragmentos de áudio na resposta.

import asyncio
import os
import sys
from pathlib import Path
from google import genai
from google.genai import types

# Configuration
MODEL = "gemini-live-2.5-flash-preview-native-audio-09-2025"
config = {
   "response_modalities": ["audio"],
}

client = genai.Client()

async def main():
   # Establish WebSocket session
   async with client.aio.live.connect(model=MODEL, config=config) as session:
       print("Session established. Sending audio...")

       # Download sample if missing
       if not os.path.exists("input.wav"):
           !wget -q https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/where_the_nearest_train_station_is.wav -O input.wav

       # Send Input (Simulated from file)
       # In production, this would be a microphone stream
       # Format: PCM, 16kHz, 16-bit, Mono, Little-Endian
       with open("input.wav", "rb") as f:
           while chunk := f.read(1024):
               await session.send_realtime_input(
                   audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
               )
               await asyncio.sleep(0.01) # Simulate real-time stream

       # Receive Output
       async for message in session.receive():
           if message.server_content:
               # Check for interruptions (User barge-in)
               if message.server_content.interrupted:
                   print("[Interrupted] Clear client audio buffer immediately.")
                   continue

               # Process Audio Chunks
               model_turn = message.server_content.model_turn
               if model_turn and model_turn.parts:
                   for part in model_turn.parts:
                       if part.inline_data:
                           # Output is PCM, 24kHz, 16-bit, Mono
                           audio_data = part.inline_data.data
                           print(f"Received audio chunk: {len(audio_data)} bytes")

           if message.server_content.turn_complete:
               print("Turn complete.")

if "ipykernel" in sys.modules:
   # Run directly in notebook
   await main()
else:
   # Run as standard .py script
   asyncio.run(main())

O que se segue?